|
|
|
@ -266,6 +266,27 @@ namespace MathNet.Numerics.LinearAlgebra.Storage |
|
|
|
return new DenseColumnMajorMatrixStorage<T>(rows, columns, array); |
|
|
|
} |
|
|
|
|
|
|
|
public static DenseColumnMajorMatrixStorage<T> OfColumnMajorArray(int rows, int columns, T[] data) |
|
|
|
{ |
|
|
|
T[] ret = new T[rows*columns]; |
|
|
|
Array.Copy(data, 0, ret, 0, Math.Min(ret.Length, data.Length)); |
|
|
|
return new DenseColumnMajorMatrixStorage<T>(rows, columns, ret); |
|
|
|
} |
|
|
|
|
|
|
|
public static DenseColumnMajorMatrixStorage<T> OfRowMajorArray(int rows, int columns, T[] data) |
|
|
|
{ |
|
|
|
T[] ret = new T[rows*columns]; |
|
|
|
for (int i = 0; i < rows; i++) |
|
|
|
{ |
|
|
|
int offset = i*columns; |
|
|
|
for (int j = 0; j < columns; j++) |
|
|
|
{ |
|
|
|
ret[(j*rows) + i] = data[offset + j]; |
|
|
|
} |
|
|
|
} |
|
|
|
return new DenseColumnMajorMatrixStorage<T>(rows, columns, ret); |
|
|
|
} |
|
|
|
|
|
|
|
public static DenseColumnMajorMatrixStorage<T> OfColumnVectors(VectorStorage<T>[] data) |
|
|
|
{ |
|
|
|
if (data.Length <= 0) |
|
|
|
@ -333,14 +354,17 @@ namespace MathNet.Numerics.LinearAlgebra.Storage |
|
|
|
var arrayData = data as T[]; |
|
|
|
if (arrayData != null) |
|
|
|
{ |
|
|
|
var copy = new T[arrayData.Length]; |
|
|
|
Array.Copy(arrayData, 0, copy, 0, arrayData.Length); |
|
|
|
return new DenseColumnMajorMatrixStorage<T>(rows, columns, copy); |
|
|
|
return OfColumnMajorArray(rows, columns, arrayData); |
|
|
|
} |
|
|
|
|
|
|
|
return new DenseColumnMajorMatrixStorage<T>(rows, columns, data.ToArray()); |
|
|
|
} |
|
|
|
|
|
|
|
public static DenseColumnMajorMatrixStorage<T> OfRowMajorEnumerable(int rows, int columns, IEnumerable<T> data) |
|
|
|
{ |
|
|
|
return OfRowMajorArray(rows, columns, data as T[] ?? data.ToArray()); |
|
|
|
} |
|
|
|
|
|
|
|
public static DenseColumnMajorMatrixStorage<T> OfColumnEnumerables(int rows, int columns, IEnumerable<IEnumerable<T>> data) |
|
|
|
{ |
|
|
|
var array = new T[rows*columns]; |
|
|
|
|