2012-02-02 18 views
7

真または偽を反対の状態に「フリップ」するよりも速い方法がありますか?MATLAB:ブール値を素早く反転する

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

はい、おそらくコードの唯一の5行は何も心配することはありませんが、より多くのこのようなものは幻想のようになります。

x = flip(x); 

答えて

16

あなたは次のことを行うことができます:

x = ~x; 
+0

ワウ。それは私が夢見ていたよりも短くなっています。私はもっ​​と出なければならない。ありがとうございました – CaptainProg

+1

さらに詳しく知りたい場合は、オンラインのMatlab doco( 'doc()'を実行)を開き、MATLAB>関数>プログラミングとデータ型>論理演算セクションをチェックしてください。それはこのような演算子の束を持っています。 :) –

6

あなたは否定文を使用できます。私はそれがMathWorks社のMATLABで動作しますが、私はどのように考えるか覚えてカント が

x = ~x; 
6

のようなものであるフランクの答えは(〜を使用して)良いですが、私はちょうどあなたの条件がやや冗長であることを指摘したかったです。ブール値をすでに持っているので、条件付きで比較を実行する必要はありません。だからあなたはちょうどこれをやったことができます...

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

この(およびOPのコード)は、 'x'がスカラーである場合にのみ正しいことに注意してください。 xが非スカラーの場合、 'if'への引数のようにブール値のコンテキストで使用されるときに暗黙の' all(x) 'があります。例えば、 'x'が' '[1 1 1 0]'ならば、それはfalseとして扱われ、 'true'に置き換えられます。 '〜'演算子はelementwiseなので、配列で動作します。 ( 'if'と一緒に使うと空の配列を除いて、それは別の端の場合です。) –

関連する問題