MATLAB: Invertiert einen booleschen Wert schnell
Gibt es einen schnelleren Weg, als die folgenden zu 'flip' ein true oder false an Ihren entgegengesetzten Zustand?
if x == true
x = false;
else
x = true;
end
Ja, vielleicht auch nur fünf Zeilen code ist nichts zu befürchten, sondern etwas, das sieht eher aus wie das wäre fantastisch:
x = flip(x);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie das folgende tun:
doc()
) und check-out der MATLAB - > Funktionen > Programmierung und Datentypen > Logische Operationen Abschnitt. Es hat eine Reihe von Operatoren wie diese. 🙂u verwenden können, negation-Anweisung.
Ich kann mich nicht erinnern, wie es funktioniert in matlab, aber ich denke, dass ist so etwas wie
Francks Antwort ist besser (mit ~), aber ich wollte nur darauf hinweisen, dass die bedingte yours ist etwas überflüssig. Es ist leicht zu vergessen, dass, da Sie bereits einen booleschen Wert, die Sie nicht brauchen, um ausführen eines Vergleichs in Ihrem bedingten. So hätte man nur getan...
x
ist Skalar. Wenn x nicht skalaren, es gibt eine impliziteall(x)
um es beim Einsatz in einem booleschen Kontext, wie als argument fürif
. Zum Beispiel, wennx
ist[1 1 1 0]
, wird er als false behandelt, und ersetzt mittrue
. Die~
- operator ist die elementweise, so dass es ' ll Arbeit mit arrays. (Außer leere arrays verwendet werden, wenn mitif
; das ist eine separate edge-Fall.)