2014-10-07 4 views
2

의 배열에서 매트릭스 이 있습니다 Math.NET 메릭스 - I 가정 복식

double[] someArray = new [] { 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44 };

어떤이 배열 중 4 × 4 매트릭스를 만드는 상자 비켜을 분할하지 않고 있는가 나 자신으로 4 개의 배열로?

나는 이것을하는 것이 간단하다는 것을 알고 있지만, 얼마나 많은 준비가되어 있는지 살펴보고 있습니다.

편집

명확되지 않는 죄송합니다 (생각 제목이었다) : Math.NET 메릭스의 매트릭스 빌더 박스 기능의 부족이있는 경우

내가 궁금하네요 것은. 같은 뭔가 : 데이터가 열 우선 순서에있는 경우

Matrix<double> someMatrix = DenseMatrix.OfArray(columns: 4, rows: 4, data: someArray);

+0

이 배열의 값은 어떻게 행렬 값에 해당합니까? Numericics 밀도 매트릭스는 내부적으로 열 우선 순위를 사용하지만 다른 라이브러리는 행 주요 또는 다른 것을 완전히 사용할 수 있습니다. –

+0

'someArray'는이 시나리오에서 열 주요 순서로되어 있습니다. –

답변

4

documentation보고에서, 당신은 직접 생성자, 또는 기능 OfColumnMajor(int rows, int columns, IEnumerable<double> columnMajor)를 사용할 수 있습니다.

코드는 다음과 같을 것이다 : 당신의 데이터를 행 메이저의 순서에있는 경우,

//Using the constructor 
Matrix<double> someMatrix = new DenseMatrix(4, 4, someArray) 

//Using the static function 
Matrix<double> someMatrix = DenseMatrix.OfColumnMajor(4, 4, someArray); 

당신이 배열로 분할하여 사용하는 OfRows 기능 중 하나를, 또는 생성자를 사용하여 행렬을 전치 수 크리스토프의 제안대로

+0

예, 배열이 열에 큰 순서로되어 있어야합니다. –

+0

예, 그렇지 않으면 OfRowMajor 함수가 없기 때문에 배열로 분할하고 OfRows 함수를 사용해야합니다. –

+1

NB : 데이터가 열 주요 순서 인 경우 [생성자] (http://numerics.mathdotnet.com/api/MathNet.Numerics.LinearAlgebra.Double/DenseMatrix.htm#.ctor)를 직접 사용할 수도 있습니다. 실제로 이것은 조밀 한 행렬을 만드는 가장 효율적인 방법입니다. –