8.5.1 要素ごとのブール演算子
要素ごとのブール式は、ブール演算子「または」('|')、 "そして" ('&')、および「ない」('!') と括弧を使用してネストを制御します。ブール式の真偽は、コンポーネント式の対応する要素の真偽値を組み合わせることによって計算されます。値が 0 の場合は false とみなされ、それ以外の場合は true とみなされます。
要素ごとのブール式は、比較式を使用できる場所であればどこでも使用できます。ifandステートメントで使用できます。ただし、 orステートメントwhile の条件として使用されるマトリックス値は、 そのすべての要素がゼロ以外の場合にのみ true になります。 ifwhile
比較演算と同様に、要素ごとのブール式の各要素にも数値 (真の場合は 1、偽の場合は 0) があり、ブール式の結果が変数に格納されるか、算術演算に使用される場合にこの数値が有効になります。
ここでは、3 つの要素ごとのブール演算子について説明します。
boolean1 & boolean2 boolean1とboolean2の両方の対応する要素が true の場合、結果の要素は true になります 。
boolean1 | boolean2 boolean1またはboolean2の対応する要素のいずれかが true の場合、結果の要素は true になります。
! boolean ~ boolean ブール値の対応する要素が false の場合、結果の各要素は true になります 。
これらの演算子は要素ごとに作用します。例えば、次の式
[1, 0; 0, 1] および [1, 0; 2, 3] 2行2列の単位行列を返します。
二項演算子には、ブロードキャスト規則が適用されます。ブロードキャストを参照してください。特に、オペランドの 1 つがスカラーで、もう 1 つが行列の場合、演算子はスカラーと行列の各要素に適用されます。
二項要素ごとのブール演算子では、結果を計算する前に、部分式 boolean1とboolean2 の両方が評価されます。式に副作用がある場合、これが違いを生むことがあります。たとえば、次の式では、
a & b++ 変数aがゼロで あっても、変数bの値は増加します 。
この動作は、ブール演算子が行列値のオペランドに対して説明されているとおりに動作するために必要です。
:TF = そして (x, y)
:TF = そして (x1, x2, …)
xとyの論理積を返します。
この関数は演算子構文と同等です 。 3 つ以上の引数が指定された場合、論理 AND が左から右に累積的に適用されます。 x & y
(...(( x1 & x2 ) & x3 ) & ...)
参照: or、not、xor。
: z = not (x)
xの論理否定を返します。
この関数は演算子構文と同等です。 ! x
参照: and、or、xor。
:TF = または (x, y)
:TF = または (x1, x2, …)
xとyの論理和を返します。
この関数は演算子構文と同等です 。 3 つ以上の引数が指定された場合、論理 OR が左から右に累積的に適用されます。 x | y
(...(( x1 | x2 ) | x3 ) | ...)
参照: and、not、xor。