运算符
- Error: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除的错误
- A&B
中括号[]的一个用法是,用来接收多个返回值/结果(数值或矩阵)。
运算符的优先级
- 运算符的优先级
- AND 和 OR 运算符的优先级
- MATLAB 始终将 & 运算符的优先级指定为高于 | 运算符。尽管 MATLAB 通常按从左到右的顺序计算表达式,但表达式 a|b&c 按 a|(b&c) 形式计算。对于包含 & 和 | 组合的语句,比较好的做法是使用括号显式指定期望的语句优先级。
该优先级规则同样适用于 && 和 || 运算符。
- MATLAB 始终将 & 运算符的优先级指定为高于 | 运算符。尽管 MATLAB 通常按从左到右的顺序计算表达式,但表达式 a|b&c 按 a|(b&c) 形式计算。对于包含 & 和 | 组合的语句,比较好的做法是使用括号显式指定期望的语句优先级。