Сопоставить матричные элементы со значениями {0, 1} в EJML - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы превратить матрицу неотрицательных целых чисел в двоичную матрицу.Например, учитывая следующую входную матрицу:

2 3
0 1

Должна быть следующая выходная матрица:

1 1
0 1

Я думаю, что это похоже на операцию отображения, поэтому эта операция выполняется в псевдокодеэквивалентно mapElements(x -> (x > 0) ? 1 : 0) или просто mapNonZeroes(x -> 1).

Возможный подход состоит в том, чтобы развернуть ненулевые элементы матрицы в триплеты со значением, установленным в 0/1, и перестроить матрицу из триплетов.Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 14 марта 2019

Для меня то, что сработало, - это прямой доступ к полю хранения nz_values и сопоставление значений самостоятельно.

public void normalizeMatrix(DMatrixSparseCSC m) {
    for (int i = 0; i < m.nz_length; i++) {
        m.nz_values[i] = Math.min(m.nz_values[i], 1.0);
    }
}
...