String matrix compare to get common in rows

3 次查看(过去 30 天)
Deal all, i have a problem to compare two string matrix :
A1 = {'AA', 'b' ; 'cc', 'ff'}
A2 = {'ee', 'AA' ; 'hhh', 'm'}
strcmp(A1,A2)
I get
A1 =
'AA' 'b'
'cc' 'ff'
A2 =
'ee' 'AA'
'hhh' 'm'
ans =
0 0
0 0
But i need to get
'AA' is common between A1 iand A2 in the row 1
Best regard

采纳的回答

Stephen23
Stephen23 2019-6-28
编辑:Stephen23 2019-6-28
>> A1 = {'AA', 'b' ; 'cc', 'ff' ; 'tt', 'kk'; 'XX', 'b'; 'AA', 'b'};
>> A2 = {'ee', 'AA' ; 'hhh', 'm'; 'kk', 'o'; 'ee', 'XX'; 'AA', 'b'};
>> X = cell2mat(cellfun(@ismember,num2cell(A1,2),num2cell(A2,2),'uni',0));
>> [R,~] = find(X);
>> [~,Y] = sort(R);
>> C = [A1(X),num2cell(R)].';
>> fprintf('''%s'' common at row %d\n',C{:,Y})
'AA' common at row 1
'kk' common at row 3
'XX' common at row 4
'AA' common at row 5
'b' common at row 5
  3 个评论
Stephen23
Stephen23 2019-6-28
"...is it possible to ignore the empty values"
Of course, just add this line after X is defined:
X = X & ~cellfun(@isempty,A1);

请先登录,再进行评论。

更多回答(1 个)

Geoff Hayes
Geoff Hayes 2019-6-27
Touts - consider using ismember to check to see if any string of A1 matches with any string of A2
>> ismember(A1,A2)
ans =
1 0
0 0
  5 个评论
Stephen23
Stephen23 2019-6-28
编辑:Stephen23 2019-6-28
@Touts Touts: repeating and clarifying Geoff Hayes's questions, which you did not answer:
  1. what happens if 'AA' occurs on different rows?
  2. what happens if 'AA' occurs multiple times within one matrix?
Touts Touts
Touts Touts 2019-6-28
Please, i need all the common between A1 and A2 and their rows
A1 = {'AA', 'b' ; 'cc', 'ff' ; 'tt', 'kk'; 'XX', 'b'; 'AA', 'b'}
A2 = {'ee', 'AA' ; 'hhh', 'm'; 'kk', 'o'; 'ee', 'XX'; 'AA', 'b'}
so
A1 =
'AA' 'b'
'cc' 'ff'
'tt' 'kk'
'XX' 'b'
'AA' 'b'
A2 =
'ee' 'AA'
'hhh' 'm'
'kk' 'o'
'ee' 'XX'
'AA' 'b'
I need
  • 'AA' common at row N° :1
  • 'kk' common at row N° :3
  • 'XX' common at row N° :4
  • 'AA' common at row N° :5
  • 'b' common at row N° :5
Any common at any row
Best regard

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by