Borrar filtros
Borrar filtros

can this loop be vectorized ?

3 visualizaciones (últimos 30 días)
Miguel Reina
Miguel Reina el 27 de Nov. de 2017
Comentada: Guillaume el 27 de Nov. de 2017
I am trying to make a function for an histogram to explain the concept to students, is possible to vectorize this loop?
[x,y]=size(A);
freq=zeros(256,1);
for i=1:x
for j=1:y
value=A(i,j);
freq(value+1)=freq(value+1)+1;
end
end
thanks in advance.

Respuesta aceptada

Guillaume
Guillaume el 27 de Nov. de 2017
Very simply with:
freq = accumarray(A(:), 1, [256, 1]);
  2 comentarios
Miguel Reina
Miguel Reina el 27 de Nov. de 2017
This error is appearing "Error using accumarray First input SUBS must contain positive integer subscripts." the Matrix A contains uint8 values and the size is 594x671
Guillaume
Guillaume el 27 de Nov. de 2017
Yes, somehow I missed the +1 in your code. The correct answer should be:
freq = accumarray(A(:) + 1, 1, [256, 1]);

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.

Community Treasure Hunt

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

Start Hunting!

Translated by