2012-07-31 50 views
0

前言:作为matlab的指导原则,通常,当想要在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) 

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

回答

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。具有重复值ijs的任何元素都加在一起

多见于

+0

哇。完全错过了那部分。谢谢! – olamundo 2012-07-31 02:52:35