我有一个500x500的稀疏矩阵,其值范围从0到a。
我想根据一个用作字典的列表来更改它的元素。等于1的元素成为列表(1(的值,等于2的元素变成列表(2(的值等等,直到等于a的值变成列表(a(
有简单的方法吗?
这至少可以通过三种方法实现:
-
方法1
[r, c, v] = find(m); m = sparse(r, c, list(v), size(m,1), size(m,2));
-
方法2
m(find(m)) = list(nonzeros(m));
-
方法3
m = spfun(@(x)list(x), m);
假设稀疏矩阵只包含0到a之间的整数,这里有一种使用逻辑索引的方法:
S = your sparse matrix
L = logical(S); % mask of elements to replace
S(L) = list(S(L)); % replace mask elements with corresponding list elements