8.5.1 逐元素布尔运算符

逐元素布尔表达式是使用布尔运算符"或"(|)、"与"(&)和"非"(!)以及用于控制嵌套的括号组合起来的比较表达式。布尔表达式的真值是通过组合各分量表达式中对应元素的真值来计算的。值为零被视为假,非零值被视为真。

逐元素布尔表达式可以在任何可以使用比较表达式的地方使用。它们可以用在ifwhile语句中。但是,在ifwhile语句中用作条件的矩阵值,仅当所有元素都非零时才为真。

与比较运算一样,逐元素布尔表达式的每个元素也具有数值(真为1,假为0)。当布尔表达式的结果存储在变量中或用于算术运算时,该数值就会起作用。

以下是对三个逐元素布尔运算符的描述。

boolean1 & boolean2

如果boolean1boolean2中对应元素都为真,则结果中对应元素的值为真。

boolean1 | boolean2

如果boolean1boolean2中对应元素有一个为真,则结果中对应元素的值为真。

! boolean
~ boolean

如果boolean的对应元素为假,则结果中对应元素的值为真。

这些运算符在逐元素的基础上工作。例如,表达式

[1, 0; 0, 1] & [1, 0; 2, 3]

返回一个二乘二的单位矩阵。

对于二元运算符,适用广播规则。参见广播。特别地,如果其中一个操作数是标量而另一个是矩阵,则将该运算符应用于标量和矩阵的每个元素。

对于二元逐元素布尔运算符,在计算结果之前,两个子表达式boolean1boolean2都会被求值。当表达式具有副作用时,这一点会产生影响。例如,在表达式

a & b++

中,即使变量a为零,变量b的值也会递增。

这种行为的必要性在于,布尔运算符需要按照对矩阵值操作数所描述的方式工作。

 
TF = and (x, y)
TF = and (x1, x2, …)

返回xy的逻辑与(AND)。

此函数等价于运算符语法 x & y。如果给定两个以上的参数,则逻辑与从左到右累积应用:

(...((x1 & x2) & x3) & ...)

另请参阅: ornotxor

 
z = not (x)

返回x的逻辑非(NOT)。

此函数等价于运算符语法 ! x

另请参阅: andorxor

 
TF = or (x, y)
TF = or (x1, x2, …)

返回xy的逻辑或(OR)。

此函数等价于运算符语法 x | y。如果给定两个以上的参数,则逻辑或从左到右累积应用:

(...((x1 | x2) | x3) | ...)

另请参阅: andnotxor


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4