Using accumarray to do sum with duplicate indicies

7 ビュー (過去 30 日間)
Paul Chesler
Paul Chesler 2017 年 9 月 24 日
コメント済み: Paul Chesler 2017 年 9 月 24 日
Hi folks, Let f and A be arrays with size(f) = [N,1] and size(A) = [M,1] with N > M. Let J be a list of indices for f with size(J) = size(A). I wish to compute the for loop
for k = 1:M,
f(J(k)) = f(J(k)) + A(k);
end
However, due to time constraints I need to do this computation without the for loop. If all the indices J were unique I would simply say f(J) = f(J) + A. However, I will need to consider the case where there are many duplicate indices in J. I suspect this can be accomplished with accumarray, but its not clear to me how to do this. Does anybody have any suggestions?
Thanks, Paul
  1 件のコメント
the cyclist
the cyclist 2017 年 9 月 24 日
It would be helpful to include a small example that is general enough for your use case, showing what the input and expected output are.

サインインしてコメントする。

採用された回答

Matt J
Matt J 2017 年 9 月 24 日
編集済み: Matt J 2017 年 9 月 24 日
Yes, it is a direct application of accumarray,
f=f+accumarray(J,A,size(f));
  1 件のコメント
Paul Chesler
Paul Chesler 2017 年 9 月 24 日
Thank you Matt! That did it perfectly.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by