【发布时间】:2018-06-01 19:08:27
【问题描述】:
我需要知道在 MATLAB 中是否有任何有效的方法来执行以下操作。
我有几个大的稀疏矩阵,每个的大小大约是 9000000x9000000。
我需要访问此类矩阵的多个元素,并为每个选定的元素分配一个存储在另一个数组中的不同值。我举个例子:
我有什么:
- 大小为 9000000x9000000 的稀疏矩阵
-
包含我要访问的索引和值列表的矩阵,这是一个这样的矩阵:
[row1, col1, value1; row2, col2, value2; ... rowN, colN, valueN]
其中N 是此类矩阵的长度。
我需要什么:
将对应的值赋给SPARSE MATRIX对应的索引,这是:
SPARSE_MATRIX(row1, col1) = value1
SPARSE_MATRIX(row2, col2) = value2
...
SPARSE_MATRIX(rowN, colN) = valueN
提前致谢!
编辑:
感谢两位的回答,我觉得我解释得不好,我会再试一次。
我已经有一个大约 9000000 行 x 9000000 列的大型 SPARSE MATRIX,它是一个用零填充的 SPARSE MATRIX。
然后我有另一个数组或矩阵,我们称它为 M 和 N 行数,其中 N 可以取 0 到 9000000 之间的值;和 3 列。前两列用于索引我的 SPARSE MATRIX 的一个元素,第三列存储我要传输到 SPARSE MATRIX 的值,即给定随机行 M、i:
SPARSE_MATRIX(M(i, 1), M(i, 2)) = M(i, 3)
这个想法是对所有行都这样做,我已经尝试过使用通用索引:
SPARSE_MATRIX(M(:, 1), M(:, 2)) = M(:, 3)
现在我想尽可能快地对M 中的所有行进行此分配,因为如果我使用循环或通用索引,则需要很长时间(我使用的是具有 16 GB RAM 的第 7 代 i7 处理器)。而且我还需要在 SPARSE_MATRIX 中保留零。
- 编辑 2:已解决!谢谢Metahominid,我没有考虑清楚,但是稀疏函数确实解决了我的问题,我只是觉得我的脑回路昨天短路了,无法看透它哈哈哈。无论如何,谢谢你们!
问候!
【问题讨论】:
标签: matlab indexing variable-assignment sparse-matrix