這是一個關於在同一語句中多次遞增MATLAB數組的一個值而不必使用for循環的問題。在一行中多次遞增MATLAB數組的一個值
設置我的數組:
>> A = [10 20 30];
然後運行:
>> A([1, 1]) = A([1, 1]) + [20 3]
A =
13 20 30
顯然,20被忽略。但是,我想它列入,使:
>> A = [10 20 30];
>> A([1, 1]) = A([1, 1]) + [20, 3]
會給:
A =
33 20 30
是否有一個功能允許這種在一個不錯的,矢量化的方式進行?
(在現實中,所述分度到該陣列將包括多個索引,所以它可能是[1 1 2 2 1 1 1 1 3 3 3]
等,用數字的陣列,以通過(所述[20, 3]
上述相同的長度的增加)。)
aaargh,快30秒:) – Adrien 2010-10-17 20:41:36
謝謝,我有第一個工作的一種享受。我相信在SUBS上沒有轉置符號 - 我只能做'A = accumarray([1:numel(A)索引]',[增量]);'工作。一旦我的數據被填充,我會爲第二個建議做一些速度比較。 – 2010-10-18 09:14:55
@ Bill:你說得對。在這種情況下,我忘了第一個輸入必須是列向量。通常,第一個輸入必須是一個M乘N矩陣,其中M是要累加的值的數量,N是下標的數量(在這種情況下爲1,但對於多維索引而言更多)。 – gnovice 2010-10-18 14:03:19