Ich bin überrascht, dass, während die Leute den logischen Array-Ansatz der Indizierung eines Arrays erwähnten, niemand den Befehl find erwähnte.
zB wenn x ein NxMxO-Array ist
x (x> 20) generiert ein logisches NxMxO-Array und indiziert damit x (was schlecht sein kann, wenn Sie große Arrays haben und nach einer kleinen Teilmenge suchen
x (find (x> 20)) generiert eine Liste (dh 1xwas auch immer) von Indizes von x, die x> 20 erfüllen, und indiziert x damit. "find" sollte meiner Erfahrung nach mehr verwendet werden als es ist.
Mehr, was ich "Tricks" nennen würde
Sie können Arrays und Zellenarrays vergrößern / anhängen, wenn Sie die benötigte Größe nicht kennen, indem Sie end + 1 verwenden (funktioniert auch mit höheren Dimensionen, solange die Dimensionen des Slice übereinstimmen - so werden Sie müssen x in diesem Fall mit etwas anderem als [] initialisieren). Nicht gut für Zahlen, aber für kleine dynamische Listen von Dingen (oder Zellenarrays), z. B. Parsen von Dateien.
z.B
>> x = [1,2,3]
x = 1 2 3
>> x (Ende + 1) = 4
x = 1 2 3 4
Ein anderer Gedanke, den viele Leute nicht wissen, ist, dass für Arbeiten an einem dim 1-Array, um das Beispiel fortzusetzen
>> für n = x; disp (n); end
1
2
3
4
Das heißt, wenn Sie nur die Mitglieder von x benötigen, müssen Sie sie nicht indizieren.
Dies funktioniert auch mit Zellenarrays, ist jedoch etwas ärgerlich, da das Element beim Gehen immer noch in eine Zelle eingeschlossen ist:
>> für el = {1,2,3,4}; disp (el); end
[1]
[2]
[3]
[4]
Um an die Elemente zu gelangen, müssen Sie sie abonnieren
>> für el = {1,2,3,4}; disp (el {1}); end
1
2
3
4
Ich kann mich nicht erinnern, ob es einen schöneren Weg gibt, das zu umgehen.