How to find repetition of each unique array in matrix?

20 views (last 30 days)
Moe
Moe on 27 Nov 2014
Answered: Star Strider on 27 Nov 2014
Suppose I have a matrix a:
a = [100680
114678
114678
31678
31678
31678
31678
19505
19505
19505
63694
114354
114354
97157
122910
122910
92417
92417
76298];
I want to find the repetition of each unique array. For example:
100680 1
114678 2
31678 4
19505 3
63694 1
114354 2
97157 1
122910 2
92417 2
76298 1

Accepted Answer

Star Strider
Star Strider on 27 Nov 2014
The easiest way is to use the hist function (with help from unique):
xbins = unique(a);
[counts,centres] = hist(a,xbins);
R = [centres counts']
produces:
R =
19505 3
31678 4
63694 1
76298 1
92417 2
97157 1
100680 1
114354 2
114678 2
122910 2

More Answers (1)

Guillaume
Guillaume on 27 Nov 2014
Use one of the histogram functions ( histc or histcounts) with unique to generate the bins. In R2014b, you're supposed to use histcounts as histc is being deprecated.
a = [100680 114678 114678 31678 31678 31678 31678 19505 19505 19505 63694 114354 114354 97157 122910 122910 92417 92417 76298]';
reps = [unique(a) histc(a, unique(a))] %with histc
reps = [unique(a) histcounts(a, [unique(a); Inf])'] %with histcounts

Community Treasure Hunt

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

Start Hunting!