Filter löschen
Filter löschen

can this loop be vectorized ?

3 Ansichten (letzte 30 Tage)
Miguel Reina
Miguel Reina am 27 Nov. 2017
Kommentiert: Guillaume am 27 Nov. 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.

Akzeptierte Antwort

Guillaume
Guillaume am 27 Nov. 2017
Very simply with:
freq = accumarray(A(:), 1, [256, 1]);
  2 Kommentare
Miguel Reina
Miguel Reina am 27 Nov. 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 am 27 Nov. 2017
Yes, somehow I missed the +1 in your code. The correct answer should be:
freq = accumarray(A(:) + 1, 1, [256, 1]);

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

Community Treasure Hunt

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

Start Hunting!

Translated by