matlab:用加法填充稀疏矩阵

时间:2012-07-31 02:09:53

标签: matlab sparse-matrix addition assign

前言:由于matlab指导状态,通常,当想要在matlab中有效填充稀疏矩阵时,他应该在矩阵中创建一个索引向量,并创建一个他想要的值向量分配,然后将所有分配集中到一个原子操作中,以便允许matlab提前“准备”矩阵并优化分配速度。一个简单的例子:

A=sparse([]);
inds=some_index_generating_method();
vals=some_value_generating_method();
A(inds)=vals;

我的问题:inds包含重叠索引的情况下我该怎么办,即inds=[4 17 8 17 9]其中17次重复两次。 在这种情况下,我想要发生的是矩阵将被赋予所有映射到同一索引的值的加法,即前面的例子

A(17)=vals(2)+vals(4) %as inds(2)==inds(4)

是否有任何直截了当,最重要的快速方法来实现这一目标?我无法以“更智能”的方式生成索引和值。

1 个答案:

答案 0 :(得分:4)

这可能会有所帮助:

  

S = sparse(i,j,s,m,n,nzmax)使用向量ij和s生成m - by - n稀疏矩阵,使S(i(k),j(k)) = s(k),空间分配给nzmax非零。向量ijs的长度都相同。 s为零的任何元素都将被忽略,以及ij的相应值。 s重复值ij 的任何元素都会加在一起

MATLAB documentation for sparse function

了解详情