将矩阵元素映射到 EJML 中的 {0, 1} 值
Map matrix elements to {0, 1} values in EJML
我想将非负整数矩阵转换为二进制矩阵。例如,给定以下输入矩阵:
2 3
0 1
输出矩阵如下:
1 1
0 1
我认为这类似于 map 操作,因此伪代码方面此操作等效于 mapElements(x -> (x > 0) ? 1 : 0)
或简单地 mapNonZeroes(x -> 1)
.
一种可能的方法是将矩阵的非零元素展开为三元组,并将值设置为 0/1,然后从三元组重建矩阵。有更好的方法吗?
对我来说,有效的方法是直接访问 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);
}
}
我想将非负整数矩阵转换为二进制矩阵。例如,给定以下输入矩阵:
2 3
0 1
输出矩阵如下:
1 1
0 1
我认为这类似于 map 操作,因此伪代码方面此操作等效于 mapElements(x -> (x > 0) ? 1 : 0)
或简单地 mapNonZeroes(x -> 1)
.
一种可能的方法是将矩阵的非零元素展开为三元组,并将值设置为 0/1,然后从三元组重建矩阵。有更好的方法吗?
对我来说,有效的方法是直接访问 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);
}
}