MATLAB: быстрое инвертирование логического значения - PullRequest
8 голосов
/ 02 февраля 2012

Есть ли более быстрый способ, чем следующий, чтобы перевернуть "истину" или "ложь" в противоположное состояние?

if x == true
 x = false;
else
 x = true;
end

Да, возможно, только пять строк кода не о чем беспокоиться, а о чем-то, что выглядитбольше похоже на это было бы фантастическим:

x = flip(x);

Ответы [ 3 ]

17 голосов
/ 02 февраля 2012

Вы можете сделать следующее:

x = ~x;
6 голосов
/ 02 февраля 2012

Ответ Франка лучше (используя ~), но я просто хотел отметить, что условие в ваше немного избыточно. Легко забыть, что, поскольку у вас уже есть логическое значение, вам не нужно выполнять сравнение в вашем условном выражении. Так что вы могли бы просто сделать это ...

if x
  x = false;
else
  x = true;
end
6 голосов
/ 02 февраля 2012

Вы можете использовать оператор отрицания.Я не могу вспомнить, как это работает в Matlab, но я думаю, что-то вроде

x = ~x;
...