如何根据列表更改所有矩阵值



我有一个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

相关内容

  • 没有找到相关文章

最新更新