Find match for a pair of rows in cell arrays

2 次查看(过去 30 天)
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.
  1 个评论
Adam
Adam 2016-9-29
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
dpb 2016-9-29
编辑:dpb 2016-9-29
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.

更多回答(1 个)

Adam
Adam 2016-9-29
编辑:Adam 2016-9-29
[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 个评论
Adam
Adam 2016-9-29
So what do you have? 2 arrays or 1 array of 6x2 size?
dpb
dpb 2016-9-29
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... :( )

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by