Using accumarray to do sum with duplicate indicies

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 日

0 投票

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 件)

カテゴリ

ヘルプ センター および File ExchangeMatrices and Arrays についてさらに検索

タグ

質問済み:

2017 年 9 月 24 日

コメント済み:

2017 年 9 月 24 日

Community Treasure Hunt

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

Start Hunting!

Translated by