2012-07-31 88 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