5

doubleの配列からベクトルを作成しようとしています。次に、このベクトルに行列を掛けたいと思います。誰かが私がこれを達成する方法を知っていますか?以下は、私が働きたいと思っている本当に簡単な例です。

// 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
...
4

3 に答える 3

13

必要な操作の簡単な例を次に示します。

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]]

つまり、次のようになります。

ここに画像の説明を入力

于 2011-07-13T19:09:16.490 に答える
1

Matrix の arrayTimes メソッドを使用できないのはなぜですか? ベクトルは単なる 1 xn 行列 (だと思います) ですので、1 次元だけで 2 つ目の行列を初期化して 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

これは、ドキュメントを読むことでうまくいくと思います。

于 2011-07-13T19:06:40.847 に答える
0

これはどう:

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から

于 2011-07-13T19:05:24.657 に答える