diff --git a/src/FSharp/LinearAlgebra.fs b/src/FSharp/LinearAlgebra.fs index 4462c2b5..ce12ce3b 100644 --- a/src/FSharp/LinearAlgebra.fs +++ b/src/FSharp/LinearAlgebra.fs @@ -85,3 +85,31 @@ module FSharpExtensions = let cfinish = defaultArg cfinish (x.ColumnCount - 1) let rfinish = defaultArg rfinish (x.RowCount - 1) x.SetSubMatrix(rstart, rfinish - rstart + 1, cstart, cfinish - cstart + 1, values) + + /// Gets a row subvector using a specified row index and column range. + /// This method can be used via the x.[r, c1 .. c2] syntax (F#3.1) + member x.GetSlice(r, cstart, cfinish) = + let cstart = defaultArg cstart 0 + let cfinish = defaultArg cfinish (x.ColumnCount - 1) + x.Row(r, cstart, cfinish - cstart + 1) + + /// Gets a column subvector using a specified row index and column range. + /// This method can be used via the x.[r, c1 .. c2] syntax (F#3.1) + member x.GetSlice(rstart, rfinish, c) = + let rstart = defaultArg rstart 0 + let rfinish = defaultArg rfinish (x.RowCount - 1) + x.Column(c, rstart, rfinish - rstart + 1) + +// /// Sets a row subvector using a specified row index and column range. +// /// This method can be used via the x.[r, c1 .. c2] <- v syntax (F#3.1) +// member x.GetSlice(r, cstart, cfinish, values) = +// let cstart = defaultArg cstart 0 +// let cfinish = defaultArg cfinish (x.ColumnCount - 1) +// x.SetRow(r, cstart, cfinish - cstart + 1, values) +// +// /// Sets a column subvector using a specified row index and column range. +// /// This method can be used via the x.[r, c1 .. c2] <- v syntax (F#3.1) +// member x.GetSlice(rstart, rfinish, c, values) = +// let rstart = defaultArg rstart 0 +// let rfinish = defaultArg rfinish (x.RowCount - 1) +// x.SetColumn(c, rstart, rfinish - rstart + 1, values)