When use || and | in if?
4 次查看(过去 30 天)
显示 更早的评论
Hello,
when can I use and | in command if?
For example:
if a||b
if a| b
Thank you
0 个评论
采纳的回答
Azzi Abdelmalek
2014-4-26
a||b will return 1 if the first expression a is true, without evaluating the second expression b
Example
2==2 || hhh % even hhh is not defined Matlab will not evaluate it, because the first expression 2==2 is true
a&&b will return 0 if the first expression a is false without evaluating the second expression b
6 个评论
Azzi Abdelmalek
2014-4-26
编辑:Azzi Abdelmalek
2014-4-26
Because Matlab, in both case (| or | | ) evaluate the first expression h which is not defined.
Azzi Abdelmalek
2014-4-26
It's better to use | |, this can make your code faster, when the first expression is true, Matlab doesn't need to evaluate the second one.
更多回答(1 个)
dpb
2014-4-26
Depends entirely on the purpose...the double logical operators short-circuit and return only a scalar whereas the single ones are point-by-point operators over the full dimension of the two operands and return a matrix of the same size.
doc relop
has further details and info
2 个评论
Jan
2014-4-27
编辑:Jan
2014-4-27
@John: When a and b are scalars, both versions are equivalent. But the first one || is slightly faster (nano-seconds for scalar operands...), when the first expression is true already. When a and/or b is a vector, you need the , which is equivalent to |or(a==3, b==2). But then the vector expression in the if command is tricky, because implicitly this is performed:
expr = or(a==3, b==2);
if all(expr) && ~isempty(expr) ...
This is at least confusing or can even be a bug, if this behavior is not intended.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!