# Find match for a pair of rows in cell arrays

5 views (last 30 days)
Stefano Alois on 29 Sep 2016
Commented: dpb on 29 Sep 2016
I have 2 cell arrays of equal length, e.g.
>> alfa = {'a'; 'b'; 'c'; 'b'; 'a'; 'c'}
alfa =
'a'
'b'
'c'
'b'
'a'
'c'
>> beta = {'b'; 'd'; 'a'; 'd'; 'a'; 'a'}
beta =
'b'
'd'
'a'
'd'
'a'
'a'
and I want to find where the pairs are repeated, which pair is it and the index where the repeated pairs are located.
So, in this case the index 2 and 4 correspond to the repeated pair 'b' and 'd', and the index 3 and 6 correspond to the repeated pair 'c' and 'a'. It is important that I know which pair is it and all the indexes where this pair is repeated.
Thank you.
What is the significance of having two cell arrays? I don't see what the relevance of the 2nd one is other than just as another example. Is it supposed to be used in some way?

dpb on 29 Sep 2016
Edited: dpb on 29 Sep 2016
Adam's on the right track, just didn't quite recognize the problem description--
>> ab=[char(alfa) char(beta)]; % mush the two arrays together
>> [u,ia,ib]=unique(ab,'rows'); % get the combinations that are extant
>> u(histc(ib,unique(ib))>1,:) % find the ones with more than one occurrence
ans =
bd
ca
>>
The alternate returns from histc and unique will provide the positions.

Edited: Adam on 29 Sep 2016
[C, ia, ic] = unique( alfa );
should give you this information. The C vector gives the characters and the ic vector tells you where they occur so repeated indices show the locations of the same letter.
[C, ia, ic] = unique( alfa )
C =
'a'
'b'
'c'
ia =
1
2
3
ic =
1
2
3
2
1
3
##### 3 CommentsShow 1 older commentHide 1 older comment
So what do you have? 2 arrays or 1 array of 6x2 size?
dpb on 29 Sep 2016
He stated he had two cell arrays only you must consider them together by row--see my response. Simplest way is as done there to convert to a 1D character vector as the 'rows' option doesn't work for cellstr arrays, unfortunately. (Why not is anybody's guess... :( )

### Categories

Find more on Matrix Indexing 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!