フィルターのクリア

How to vectorize this simple for-loop

1 回表示 (過去 30 日間)
Felix Lauwaert
Felix Lauwaert 2015 年 8 月 19 日
コメント済み: Felix Lauwaert 2015 年 8 月 19 日
Hello,
I'm trying to vectorize something like this:
z=zeros(3); x=[1 2 3]; y=x;
for i=1:length(x) %or y, doesn't matter
z( x(i),y(i) )=z( x(i),y(i) ) + 1;
end
So
z= [1 0 0 ; 0 1 0 ; 0 0 1]
What I really want is to do it for any x and y vectors in a 1000by1000 zero matrix.
I tried to do:
z(x,y)=z(x,y)+1;
But I get all values of z =1. I also tried:
z(x.,y.)=z(x.,y.)+1;
But an error message appears.
Thanks for your help.

採用された回答

Matt J
Matt J 2015 年 8 月 19 日
編集済み: Matt J 2015 年 8 月 19 日
idx=sub2ind(size(z),x,y);
z(idx)=z(idx)+1;
  2 件のコメント
Felix Lauwaert
Felix Lauwaert 2015 年 8 月 19 日
Error using sub2ind (line 52) Out of range subscript.
Felix Lauwaert
Felix Lauwaert 2015 年 8 月 19 日
idx=sub2ind([length(x),length(x)],x,y); z(idx)=z(idx)+1;
Is working. Thanks!

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

その他の回答 (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