String matrix compare to get common in rows
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Touts Touts
le 26 Juin 2019
Commenté : Touts Touts
le 28 Juin 2019
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
0 commentaires
Réponse acceptée
Stephen23
le 28 Juin 2019
Modifié(e) : Stephen23
le 28 Juin 2019
>> 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 commentaires
Stephen23
le 28 Juin 2019
"...is it possible to ignore the empty values"
Of course, just add this line after X is defined:
X = X & ~cellfun(@isempty,A1);
Plus de réponses (1)
Geoff Hayes
le 27 Juin 2019
>> ismember(A1,A2)
ans =
1 0
0 0
Voir également
Catégories
En savoir plus sur Interpolation dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!