2016-04-26 3 views
1

je 1 chaîne et 1 matrice de cellules de Srings:Comparer 1 chaîne avec une matrice de cellules de chaînes avec des index (Matlab)

F = 'ABCD' 
    R = {'ACBD','CDAB','CABD'}; 

Je voudrais comparer la chaîne F avec toutes les chaînes en R comme suit: F (1) = 'A' et R {1} (1) = 'A', on comptera 1 (parce qu'ils ont la même valeur 'A'), F (2) = 'B' et R {1} (2) = 'C' nous compterons 0 (parce qu'ils ont des valeurs différentes) ... et comme ça jusqu'à la fin de toutes les chaînes. Nous obtiendrons same = 2, dif = 2 pour ce 'ABCD' et 'ACBD'.

Comment puis-je comparer F avec tous les éléments de R dans la règle ci-dessus et obtenir le total (identique) et le total (dif)?

Répondre

2

En supposant que toutes les chaînes R a la même longueur que F vous pouvez utiliser cellfun:

same = cellfun(@(r) sum(F==r), R) 

Résultats avec

2  0  1 

C'est, la valeur same par chaîne dans R. Si vous voulez dif:

dif = numel(F)-same; 

Si vous voulez que les totaux:

tot_same = sum(same); 
tot_dif = sum(dif);