i've a matrix of 6x4 and i want to count the rows how many times it occur in a matrix

3 views (last 30 days)
let say the matrix is
A=[ 12 45 67 89
34 56 78 65
12 45 67 89
53 55 21 90
12 45 67 89
53 55 21 90 ]
i want the output to be as:
12 45 67 89 ----- 3 % because it occurs 3 times
34 56 78 65 ------1
53 55 21 90 ------2
plz help me

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 8 May 2013
A=[ 12 45 67 89
34 56 78 65
12 45 67 89
53 55 21 90
12 45 67 89
53 55 21 90 ]
[a,b,c]=unique(A,'rows','stable');
v=arrayfun(@(x) sum(c==x),1:size(a,1))';
out=[a v]
  2 Comments
Emma Cairns
Emma Cairns on 9 Aug 2017
I have an instance where I need to do this twice with two separate matrices and I keep getting the same output for both using this code, is there any way I can make it work? Thanks!
Jan
Jan on 9 Aug 2017
Edited: Jan on 9 Aug 2017
@Emma: Yes, there is a way. Of course there is. If you post the relevant part of your code (preferably as a new question and not by high-jacking this thread), we can even suggest a solution.
Andrei's method is slightly faster and (c)leaner.

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 8 May 2013
A=[ 12 45 67 89
34 56 78 65
12 45 67 89
53 55 21 90
12 45 67 89
53 55 21 90 ];
[a,c,c] = unique(A,'rows');
out = [a, histc(c,1:max(c))];

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!