Как умножить две одномерные матрицы с помощью JAMA? - PullRequest
1 голос
/ 31 августа 2011

Это может быть немного глупым вопросом, и я мог бы также неправильно понять, как лучше всего подойти к этой проблеме, но я по сути хочу сделать следующее:

Я хочу умножить следующие матрицы вместечтобы получить результат -0,8.Однако в идеале я хотел бы сделать это, используя функцию JAMA.Пока у меня есть следующее, и я думаю, что я почти на месте, это всего лишь последний шаг, на котором я застрял ..

// Create the two arrays (in reality I won't be creating these, the two 1D matrices
// will be the result of other calculations - I have just created them for this example)
double[] aArray = [0.2, -0.2];
double[] bArray = [0, 4];

// Create matrices out of the arrays
Matrix a = new Matrix( aArray, 1 );
Matrix b = new Matrix( bArray, 1 );

// Multiply matrix a by matrix b to get matrix c
Matrix c = a.times(b);

// Turn matrix c into a double
double x = // ... this is where I'm stuck

Любая помощь в этом была бы очень признательна.Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

Звучит так, как будто вы ищете

double x = c.get(0, 0);

Кроме того, ваши матрицы имеют несовместимые размеры для умножения. Похоже, что вторая матрица должна быть построена так:

Matrix b = new Matrix( bArray, bArray.length );
2 голосов
/ 31 августа 2011

Вы можете просто использовать метод get () :

double x = c.get(0,0);

Обратите внимание, что вы получите исключение IllegalArgumentException, поскольку пытаетесь умножить два вектора строки. Из times() документации:

java.lang.IllegalArgumentException - Matrix inner dimensions must agree.

Вы, вероятно, хотите превратить второй массив в вектор-столбец.

2 голосов
/ 31 августа 2011

Вы имеете ввиду использование get?

double x = c.get(0, 0);

http://math.nist.gov/javanumerics/jama/doc/

...