Filter löschen
Filter löschen

Count the number of occurances of an element using accumarray

5 Ansichten (letzte 30 Tage)
Now I am trying to find the occurance of an element in a vector using
sum(dta(:,size(dta,2))==3);
How can accumarray be used to find the frequency of elements ?
A = [7 11 2 3 4 5 4 7 7 2 1 4 1];
How can I get a result such as,
  • 7 3
  • 11 1
  • 2 2
  • 3 1
  • 4 2
and so on.
Thanks in Advance.
P.S: I looked through other threads, but did not understand how it worked. The example given was count = accumarray(A',1) and the result was a vector which was not clear to me.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 27 Dez. 2012
Bearbeitet: Azzi Abdelmalek am 27 Dez. 2012
A = [7 11 2 3 4 5 4 7 7 2 1 4 1]
[a,b,c ]=unique(A,'stable')
out=[a' accumarray(c,1)]
  3 Kommentare
Ms. Mat
Ms. Mat am 12 Jan. 2013
what is this option 'stable'. I work with 2009 version. I dont have this option. Also could you please explain wat really the code is doing.
Thank You
Azzi Abdelmalek
Azzi Abdelmalek am 12 Jan. 2013
A = [7 11 2 3 4 5 4 7 7 2 1 4 1]
[a,b,c ]=unique(A) % you can remove 'stable'
% a is the array containing unique value but in sorted order
%a=[ 1 2 3 4 5 7 11], if you remove 'stable', the result will be sorted
%c=[6 7 2 3 4 5 4 6 6 2 1 4 1] gives the indices of each value of A in a
% for example the 2nd value 11 in A is the 7nth in a
out=[a' accumarray(c,1)], %the result is sorted
1 2
2 2
3 1
4 3
5 1
7 3
11 1

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sean de Wolski
Sean de Wolski am 27 Dez. 2012
I would use histc on the output vector c that you have above from unique()
Frankly you should be able to skip all of that altogether:
[uv, idx] = unique(A);
n = histc(A,uv);
nA = n(idx)
(not tested in ML)

Kategorien

Mehr zu Shifting and Sorting Matrices 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