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

一维矩阵不包含有关它们如何定向的任何信息。因此,您需要提供此信息才能转置它。例如,如果您使用的是行向量,那么您有一个 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 回答