Lineare Indizierung, logische Indizierung und all das

Wir sind an verschiedene Indizierungsformen in Matlab gewöhnt:

standard (mit ganzen Zahlen in jeder Dimension),logical (mit logischen Werten),linear (Verwenden eines einzelnen Index zum Durchlaufen eines Arrays mit mehr als einer Dimension).

Auf den ersten Blick scheint es, dass diese Formen exklusiv sind: Ein Index ist entweder standard oder logisch oder linear. Manchmal scheint es jedoch eine Mischung zwischen mehreren dieser Formen zu geben. Beispielsweise

>> A = magic(3)
A =
     8     1     6
     3     5     7
     4     9     2
>> A(A>5)
ans =
     8
     9
     6
     7

Das ist logische Indizierung, oder? Es hat jedoch auch einige Merkmale der linearen Indizierung, da ein Spaltenvektor zurückgegeben wird. Tatsächlich ist der logische IndexA>5 hat den gleichen Effekt wie der lineare Indexfind(A>5).

Als zweites Beispiel betrachten wir

>> A = magic(3)
A =
     8     1     6
     3     5     7
     4     9     2
>> A(1:2, [true false true])
ans =
     8     6
     3     7

In diesem Ausdruck wird für die erste Koordinate die Standardindizierung (Ganzzahl) und für die zweite die logische Indizierung verwendet.

Diese Beispiele (und kompliziertere, die sich in der Praxis ergeben) werfen folgende Fragen auf:

Welche Indizierungsarten gibt es in Matlab?Wie können sie kombiniert werden?Wie sollen sie genannt werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage