Borrar filtros
Borrar filtros

How to vectorize this simple for-loop

1 visualización (últimos 30 días)
Felix Lauwaert
Felix Lauwaert el 19 de Ag. de 2015
Comentada: Felix Lauwaert el 19 de Ag. de 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.

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by