Filter löschen
Filter löschen

How to vectorize this simple for-loop

1 Ansicht (letzte 30 Tage)
Felix Lauwaert
Felix Lauwaert am 19 Aug. 2015
Kommentiert: Felix Lauwaert am 19 Aug. 2015
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.

Akzeptierte Antwort

Matt J
Matt J am 19 Aug. 2015
Bearbeitet: Matt J am 19 Aug. 2015
idx=sub2ind(size(z),x,y);
z(idx)=z(idx)+1;
  2 Kommentare
Felix Lauwaert
Felix Lauwaert am 19 Aug. 2015
Error using sub2ind (line 52) Out of range subscript.
Felix Lauwaert
Felix Lauwaert am 19 Aug. 2015
idx=sub2ind([length(x),length(x)],x,y); z(idx)=z(idx)+1;
Is working. Thanks!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by