前言:由于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)
是否有任何直截了当,最重要的快速方法来实现这一目标?我无法以“更智能”的方式生成索引和值。
答案 0 :(得分:4)
这可能会有所帮助:
了解详情
S = sparse(i,j,s,m,n,nzmax)
使用向量i
,j
和s生成m
- by -n
稀疏矩阵,使S(i(k),j(k)) = s(k)
,空间分配给nzmax
非零。向量i
,j
和s
的长度都相同。s
为零的任何元素都将被忽略,以及i
和j
的相应值。s
重复值i
和j
的任何元素都会加在一起。