Find out the rows having same values in all columns of a matrix

115 views (last 30 days)
Sky Scrapper on 26 Nov 2018
Commented: Sky Scrapper on 24 Jan 2019
Hi,
I have a matrix with 4374 rows and 8 columns. I need to find the rows which have all the columns are of same values and it's repeated for 6 times.
As for example,
Let us consider a matrix, A= [ 0 0 0 0 1 0 0 ; 1 0 0 0 0 1 0; 1 0 0 0 0 1 0; 0 1 0 1 0 1 0; 1 0 0 0 0 1 0; 0 0 0 0 0 0 0; 1 0 0 0 0 1 0, 1 1 1 1 1 1 1; 1 0 0 0 0 1 0 , 0 0 1 1 0 1 0; 1 0 0 0 0 1 0; 0 0 0 0 1 0 0].
Here,0 0 0 0 1 0 0 is repeated twice and 1 0 0 0 0 1 0 is repeated for 6 times. Finally, I need to find and keep only those rows having repeated for 6 times (as like 1 0 0 0 0 1 0 in the given example) .

Stephen23 on 26 Nov 2018
Edited: Stephen23 on 26 Nov 2018
Something like this should get you started:
>> A = [0,0,0,0,1,0,0;1,0,0,0,0,1,0;1,0,0,0,0,1,0;0,1,0,1,0,1,0;1,0,0,0,0,1,0;0,0,0,0,0,0,0;1,0,0,0,0,1,0;1,1,1,1,1,1,1;1,0,0,0,0,1,0;0,0,1,1,0,1,0;1,0,0,0,0,1,0;0,0,0,0,1,0,0]
A =
0 0 0 0 1 0 0
1 0 0 0 0 1 0
1 0 0 0 0 1 0
0 1 0 1 0 1 0
1 0 0 0 0 1 0
0 0 0 0 0 0 0
1 0 0 0 0 1 0
1 1 1 1 1 1 1
1 0 0 0 0 1 0
0 0 1 1 0 1 0
1 0 0 0 0 1 0
0 0 0 0 1 0 0
>> [U,~,idx] = unique(A,'rows');
>> cnt = histc(idx,unique(idx)) % count how many times rows occur.
cnt =
1
2
1
1
6
1
>> out = U(cnt==6,:) % pick which the unique rows which occur >= 6 times.
out =
1 0 0 0 0 1 0
If you want to get those multiple row instances, then try this:
>> idr = ismember(idx,find(cnt==6));
>> A(idr,:)
ans =
1 0 0 0 0 1 0
1 0 0 0 0 1 0
1 0 0 0 0 1 0
1 0 0 0 0 1 0
1 0 0 0 0 1 0
1 0 0 0 0 1 0
Sky Scrapper on 24 Jan 2019
yes, that's I want. thank you so much!

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!

Translated by