Matlab 中的逻辑运算"&&"与"&","||"与"|"的区别 逻辑运算符: & 与 | 或 ~ 非 “&”和“|”操作符可比较两个标量或两个同阶矩阵.对于矩阵来说必须符合规则,如果 A 和 B 都是 0-1 矩阵,则 A&B 或A|B 也都是 0-1 矩阵,这个 0-1 矩阵的元素是 A 和 B对应元素之间逻辑运算的结果,逻辑操作符认定任何非零元素都为真,给出“1”,任何零元素都为假,给出“0”. 非(或逻辑非)是一元操作符,即~ A:当 A 是非零时结果为“0”;当 A 为“0”时,结果为“1”.因此下列两种表示: p | (~ p) 结果为 1. p & (~ p) 结果为 0. any 和 all 函数在连接操作时很有用,设 x 是 0-1 向量,如果 x 中任意有一元素非零时,any(x)返回“1”,否则返回“0”;all(x)函数当 x 的所有元素非零时,返回“1”,否则也返回“0”.这些函数在 if 语句中经常被用到.如: if all(A<5) do something end 另外,还有"&&"和"||"运算符,Matlab 中的逻辑运算"&&"与"&","||"与"|"的区别如下: &&和||被称为&和|的short circuit 形式, A&B (1)首先判断 A 的逻辑值,然后判断 B 的值,然后进行逻辑与的计算。 (2)A 和 B 可以为矩阵(e.g. A=[1 0],B=[0 0])。 A&&B (1)首先判断 A 的逻辑值,如果 A 的值为假,就可以判断整个表达式的值为假,就不需要再判断 B 的值。 (2)A 和 B 不能是矩阵,只能是标量。 "|"与“||”同理。 A&&B 首先判断 A 的逻辑值,如果 A 的值为假,就可以判断整个表达式的值为假,就不需要再判断 B 的值。这种用法非常有用,如果 A 是一个计算量较小的函数,B 是一个计算量较大的函数,那么首先判断 A 对减少计算量是有好处的。另外这也可以防止类似被 0 除的错误: flag=denum~ =0 && num/denum>10 if flag %Do Something end if 上面的表达式就可以防止denum 等于0 的情况。当然,如果你希望在判断的时候,对 A 和B 表达式都进行计算,就应该使用标准的&或者|。Matlab 中的if 和 while 语句中的逻辑与和逻辑或都是默认使用 short-circuit 形式。 if flag=denum~ =0 && num/denum>10 %Do Something end if 与 if flag=denum~ =0 & num/denum>10 %Do Something end if 执行的结果一样 符号 符号用途说明 + 加 - 减 .* 点乘 详细说明 help arith * 矩阵相乘 ^ ...