2015-08-01 2 views
-1

Я использую библиотеку Apache Commons Math для матричных операций, потому что она кажется вполне полной, несмотря на ее абсолютную нехватку надлежащей документации.Доступ к ненулевым элементам разреженной матрицы в библиотеке Commons Math

import org.apache.commons.math3.linear.SparseFieldMatrix; 

//inside a function: 
    int n = 300; 
    SparseFieldMatrix Y = new SparseFieldMatrix(ComplexField.getInstance(), n, n); 
    // some code to fill values into Y 

Я видел метод Y.walkInRowOrder(FieldMatrixChangingVisitor<Complex>());, который я думаю, делает то, что я хочу: чтобы перечислить столбцы, которые содержат элементы для каждой строки.

Однако я понятия не имею, как его использовать, поскольку FieldMatrixChangingVisitor не может быть создан. Каким будет правильный подход?

ответ

1

Несмотря на отрицательное голосование, я считаю, что это законный вопрос, за который я нашел ответ после большого количества чтения кода.

Ответ заключается в том, что при разрешенной реализации математической библиотеки commons невозможно найти ненулевые элементы хранимой разреженной матрицы. Вместо этого вам нужно зацикливать все строки и столбцы на «повторное открытие», которые не равны нулю (другими словами, какие elmenets находятся во внутренней структуре хранения).

Итак, если вы читаете это, подумайте о создании структуры для отображения ваших разреженных матричных индексов или перехода на другую разреженную библиотеку алгебры.

Смежные вопросы