Как я могу умножить матрицу на вектор, используя JAMA? - PullRequest
5 голосов
/ 13 июля 2011

Я пытаюсь создать вектор из массива пар.Затем я хочу умножить этот вектор на матрицу.Кто-нибудь знает, как мне этого добиться?Ниже приведен очень простой пример, который я хотел бы получить.

// Create the matrix (using JAMA)
Matrix a = new Matrix( [[1,2,3],[1,2,3],[1,2,3]] );

// Create a vector out of an array
...

// Multiply the vector by the matrix
...

Ответы [ 3 ]

12 голосов
/ 13 июля 2011

Вот простой пример требуемой операции:

double[][] array = {{1.,2.,3},{1.,2.,3.},{1.,2.,3.}}; 
Matrix a = new Matrix(array);   
Matrix b = new Matrix(new double[]{1., 1., 1.}, 1);     
Matrix c = b.times(a);  
System.out.println(Arrays.deepToString(c.getArray()));

Результат:

[[3.0, 6.0, 9.0]]

Другими словами:

enter image description here

1 голос
/ 13 июля 2011

Почему вы не можете использовать метод Matrix arrayTimes?Вектор - это всего лишь матрица размером 1 xn (я думаю), поэтому вы не можете инициализировать вторую матрицу только одним измерением и использовать arrayTimes?

Matrix a = new Matrix( [[1,2,3],[1,2,3],[1,2,3]] );
Matrix b = new Matrix( [[1,2,3]] ); // this is a vector
Matrix c = a.arrayTimes(b.transpose); // transpose so that the inner dimensions agree

Это то, что, я думаю, сработает из чтения документ .

0 голосов
/ 13 июля 2011

Как насчет этого:

double[][] vals = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}};
Matrix A = new Matrix(vals);

От http://math.nist.gov/javanumerics/jama/doc/Jama/Matrix.html

...