2013-02-20 55 views
2

具有一個大小爲n x 3的矩陣,我想按第1列和第2列定義的組對第3行值進行求和。如何組合多列?

給定一個具體的例子

A =[0.0050 0.0050 0.0050 
    0.0050 0.0050 0.0150 
    0.0050 0.0050 0.0250 
    0.0050 0.0050 0.0350 
    0.0050 0.0150 0.0050] 

我想總結第三列,使得我會得到一個矩陣

SUMA = [0.05 0.05 0.8; 0.05 0.15 0.005];

我嘗試通過調用accumarray(A(:,[1 2]),A(:,3))創建組,但它返回一個錯誤: 首次輸入的SUBS必須包含正整數下標。

然後我試圖通過首先創建

ind = A(:, [1,2])*1000; 

然後

accumarray(ind, A(:,3)) 

來解決,但它返回一個5×15矩陣這是不是我想要得到的結果。

有誰知道如何總結行,按選定列組合(相當於SQL SELECT a,b,SUM(c)FROM GROUP BY a,b)組合嗎?

謝謝!

回答

3

[~,~,ind]=unique(A(:,1:2),'rows')爲您提供了一個有用於accumarray的下標/索引數組。第一個參數的標有需要參考位置在第二(即列向量A(:,3)。不知道爲什麼你期望的數據,而不是指數,做任何事情有一個2×5矩陣。

ans(ind)將會給你一個列向量,其行數爲A