2013-10-13 4 views
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 

Любые идеи?

ответ

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)); 
} 
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.