2011-11-20 799 views
1

假設我有一個數組age=[16 17 25 18 32 89 43 55],它包含特定人員列表的年齡。我還有第二個數組,名爲groups=[1 1 2 1 3 2 1 4]表示每個人屬於哪個組,即年齡爲55的人是組4中唯一的人,組1中有3人等。Matlab:將數組中的元素加入到另一個數組中

我想計算組合每組年齡的總和。也就是說,我想在這種情況下得到的結果是4個元素的數組,它是第一個包含屬於組1(16 + 17 + 18 + 43)的人的年齡總和的條目,第二個條目包含屬於組2(23 + 89)等人的年齡等。

我當然知道如何用for循環做到這一點,但是可以使用sum或類似的某種變化來做到這一點,所以挖掘matlab的矢量優化?

+1

你還需要43 +16 + 17 + 18。 – petrichor

+0

@İsmailArı - 修復 – olamundo

回答

4

中的代碼@伊斯梅爾的答案是好的,但你也可以試試這個:

>> accumarray(groups', age') 
ans = 
    94 
    114 
    32 
    55 

我覺得很難得到一個從文檔中欣賞到什麼accumarray可以完全通用,但這是一個簡單用法的很好例子。值得學習如何有效地使用它,因爲一旦你完成了它的功能非常強大 - 它會比arrayfun快得多(當用於更大的示例時)。

相關問題