2016-04-26 6 views
1

Ich habe 1 String und 1 Zellenfeld von Srings:Vergleichen Sie die 1-String mit einer Zelle Array von Strings mit Indizes (Matlab)

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

Ich möchte die Zeichenfolge F mit allen Saiten in R vergleichen wie folgt: F (1) = 'A' und R {1} (1) = 'A', wir zählen 1 (weil sie den gleichen Wert 'A' haben), F (2) = 'B' und R {1} (2) = 'C' wir zählen 0 (weil sie unterschiedliche Werte haben) ... und so bis zum Ende aller Strings.

Wir werden same = 2, dif = 2 für diese "ABCD" und "ACBD" erhalten.

Wie kann ich F mit allen Elementen in R in der obigen Regel vergleichen und die Summe (gleich) und Gesamt (Diff) erhalten?

Antwort

2

alle Strings in R Unter der Annahme, hat die gleiche Länge wie F Sie cellfun verwenden können:

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

Ergebnisse mit

2  0  1 

Das heißt, der same Wert pro String in R. Wenn Sie dif wollen:

dif = numel(F)-same; 

Wenn Sie die Summen:

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