access array multiple times and calculate some value
1 回表示 (過去 30 日間)
古いコメントを表示
Hi all, I would like to know if there's a faster way that using a foor loop for this:
a = rng(99);
A = randn(1,100);
B = [20 23; 30 37; 51 55; 78 100 ];
For each row B, I would like to slice A from the first column to the second column value, and then apply some function, for example, sum.
So for example, the first computation would be sum(A(20:23)), then sum(A(30:37)) ... sum(A(78:100)).
The for loop would be:
for ii = 1:size(B,1)
sum(A(B(ii,1) : B(ii,1) );
end
Could I program this such that it results in a faster calculation?
0 件のコメント
回答 (1 件)
David Hill
2022 年 7 月 28 日
Shorter way to write it, but will not improve speed.
s=arrayfun(@(x)sum(A(B(x,1):B(x,2))),1:size(B,1));
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!