0

ライブラリの関数を使用して配列を転置するにはどうすればよいですか? ここからライブラリ Colt をダウンロードして使用しました: http://acs.lbl.gov/software/colt/api/index.html。私は試した :

DoubleMatrix1D array;
array = new DenseDoubleMatrix1D(4);
for (int i=0; i<4; i++)
    array.set(i,i);
DoubleMatrix1D transpose = array.viewDice();

しかし、エラーが発生するため、機能しません:

The method viewDice() is undefined for the type DoubleMatrix1D

何か案は?

4

2 に答える 2

1

1D マトリックスには、それらがどのように方向付けられているかについての情報は含まれていません。したがって、転置するには、この情報を提供する必要があります。たとえば、行ベクトルを使用している場合、行列は 1xm なので、転置を含む mx1 列ベクトルが必要になります。

これを試して:

DoubleMatrix2D transpose = new DenseDoubleMatrix2D(4,1);
for (int i=0; i<4; i++) {
    transpose.setQuick(i,0,array.getQuick(i));
}

代わりに列ベクトルがある場合、転置は行ベクトルになります。

DoubleMatrix2D transpose = new DenseDoubleMatrix2D(1,4);
for (int i=0; i<4; i++) {
    transpose.setQuick(0,i,array.getQuick(i));
}
于 2013-10-13T19:12:38.200 に答える
0

これは、DoubleMatrix1D クラスにメソッド viewDice() が存在しないことを意味します。したがって、ほとんど使用できません:)。

ドキュメントによると、これを使用できます:

 double[]   toArray() 
          Constructs and returns a 1-dimensional array containing the cell values.

または多分これ:

 DoubleMatrix1D copy() 
          Constructs and returns a deep copy of the receiver.
于 2013-10-13T18:50:21.777 に答える