2016-04-14 11 views
1

ich das Array, wie oft eine Zeichenkette in einem Zellenfeld vorhanden ist

b={'2' '21' '' '' '' '' '';'3' '32' '' '' '' '' '';'2' '24' '242' '2423' '' '' '';'(34)' '(34)2' '' '' '' '' '';'4' '43' '432' '4323' '' '' '';'3' '32' '321' '3212' '32124' '321243' '';'3' '34' '343' '3432' '34323' '' '';'(34)' '(34)3' '' '' '' '' '';'2' '21' '212' '' '' '' '';'3' '32' '323' '' '' '' '';'4' '41' '413' '4132' '41321' '413213' '4132132';'3' '34' '342' '3423' '34232' '342321' '';'4' '42' '421' '4212' '42124' '' '';'4' '43' '432' '4324' '' '' '';'4' '43' '432' '4323' '43234' '' ''} 

Ich möchte wissen, wie oft die Zeichenfolge in einem sind, haben

a={'2';'23';'231';'2312';'23121';'231213';'3';'31'}

und die Zellenmatrix in b

eg string '2' is present 3 times 
    string '23' is present 0 times 
    string '231' is present o times 
    string '3' is present 5 times 

ist es das gleiche für die alle Saiten in einem

Ich möchte wie ein Array ausgeben mit der Anzahl der Male Strings in einem Geschenk in b, können Sie mir helfen?

Wenn die Frage nicht klar ist, versuche ich die gleichen besser

+1

Ich denke, [ 'strcmp'] (http://fr.mathworks.com/help/matlab/ref/strcmp.html) Wird besorgt. versuche zu programmieren ..! – shamalaia

Antwort

3

strcmp(S1,S2) gibt 1 zurück, wenn S1 und S2 zu erklären. Verwenden Sie find, um zu finden, welche Indizes die Zeichenfolge enthalten, die Sie suchen, und überprüfen Sie dann den length des zurückgegebenen Vektors. Schließlich, drehen Sie diese in eine Zeichenfolge mit num2str. Jetzt haben Sie die Anzahl der Male, die eine Zeichenfolge in b vorhanden ist.

Hier ist der Code:

result = cell(length(a),1); 
for k = 1:length(a) 
    result{k} = sprintf('string ''%s'' is present %d times', a{k}, length(find(strcmp(b,a(k))))); 
end 

Ergebnis:

result = 

'string '2' is present 3 times' 
'string '23' is present 0 times' 
'string '231' is present 0 times' 
'string '2312' is present 0 times' 
'string '23121' is present 0 times' 
'string '231213' is present 0 times' 
'string '3' is present 5 times' 
'string '31' is present 0 times' 
+1

Schön, 'sprintf' könnte besser lesbar sein als' '' ', um die Strings zu concatchen. Auch wenn Sie 'result {k} = ...' haben, können Sie die '{}' auf der RHS weglassen. – Dan

+0

Ich denke, mein Mitglied kann es ohne die Schleife tun, aber das ist eine gute Antwort. – GameOfThrows

+0

Danke @Dan, sehr gut! – JCKaz

Verwandte Themen