Matlab: Elementweise vergleichen, woher kommt der Befehl a(a>x)=y?

1 Antwort

Das ganze setzt sich aus 2 Teilen zusammen:

Erstens: Der Ausdruck "a > x" erzeugt eine Matrix vom Typ logical mit der selben Größe wie a. Diese Matrix hat eine logische 1 (true) an allen Positionen, an denen die Bedingung erfüllt ist, und eine logische 0, wenn die Bedingung nicht erfüllt ist.

Zweitens: Jeder Vektor und jede Matrix kann auf verschiedene Wege adressiert werden. Der Standardweg ist über die Adresse eines Elements. Also ganz klassisch a(2, 3) = 5; Man kann aber auch eine logische Matrix als Adressierung wählen. Diese muss dann genau so groß sein, wie die Matrix, auf die du zugreifen willst.

Beispiel:

a = rand(5); % 5x5 Zufallsmatrix

idxMatrix = logical( eye(5) ); % Einheitsmatrix als logical Datentyp

a(idxMatrix) = 0; % weißt jedem Wert von a, an dem idxMatrix == 1, den entsprechenden Wert zu

MrRayman 
Fragesteller
 24.07.2017, 22:14

Vielen Dank, jetzt habe ich es verstanden. Wirklich gut erklärt.

0