Das ist, weil Sie verwenden müssen {geschweiften Klammern}, um den Inhalt zuzugreifen des Zellenfeldes.
Mit (regulären Klammern) indiziert die tatsächliche Zelle, die in Ihrem Fall eine Zeichenfolge enthält. Um das Vorhandensein von Strings zu überprüfen, empfehle ich außerdem, strcmp oder vielleicht strfind zu verwenden.
Daher verwenden:
strcmp(myArray{3,1},'ABC')
prüfen here für Infos über die Indizierung in Zellenanordnungen.
EDIT (folgende Kommentare)
Verwendung logischer ==
, um Strings in einem Zellenfeld zu finden, ist nicht sicher, da mit diesem Betreiber die Saiten teilt und vergleicht jeden Buchstaben sie bilden, im Gegensatz zu strcmp
und die Likes, die die ganze Zeichenfolge überprüft.
Betrachten Sie diesen Code, wo ich einige Saiten setzen in myArray
:
myArray = {'A' 'B' 'ABC' 'CBA' 'ABC'}.'
myArray =
'A'
'B'
'ABC'
'CBA'
'ABC'
Wenn wir ==
auf dieser Zelle Array von Strings gelten wie folgt:
Check_31 = myArray{3,1} == 'ABC'
Check_41 = myArray{4,1} == 'CB_'
Matlab diese zwei logische Vektoren zurückgibt:
Check_31 =
1 1 1
Check_41 =
1 1 0
So wie Sie sehen, das Zeichen "_" ist nicht das letzte Element der Zeichenfolge in der Zelle {4,1}.
Wenn wir nun verwenden strcmp
(auf der ganzen Zellenanordnung, wir brauchen keine spezifischen Zellen zu indizieren zu prüfen, ob einige String vorhanden ist):
Check_ABC = strcmp(myArray,'ABC')
Wir auch eine logische Vektor erhalten, aber diese Zeit, die sich nicht auf die 3 Buchstaben bezieht, die den String innerhalb der Zelle bilden, sondern sich auf das Zellenfeld selbst beziehen und ob "ABC" vorhanden ist oder nicht. Das Ergebnis ist dies:
Check_ABC =
0
0
1
0
1
was Sinn macht, da 'ABC' in der Tat in Zellen vorhanden ist {3,1} und {5,1}.
Hoffnung, die klarer ist!
myArray {3,1} == 'ABC' funktioniert gut, aber wenn ich es in einer Schleife zu tun, zum Beispiel myArray {i, 1} == 'ABC' (Looping über i) nicht. Es besagt, dass die Matrix-Dimensionen übereinstimmen müssen. Warum funktioniert das nicht und warum müssen wir hier strcmp benutzen? – user107986
Was ist mit strcmp (myArray {i, 1}, 'ABC')? – JaBe
Mit == testen Sie jedes Element des Zeichenarrays {i, 1} mit allen Elementen des rechten Zeichenarrays 'ABC'. Zum Vergleichen von 'XYZ' == 'ABC' gibt [0 0 0] aber 'XY' == 'ABC' gibt den Fehler, weil die Dimensionen nicht übereinstimmen (2 nicht gleich 3). – JaBe