4 views (last 30 days)

Show older comments

Hello,

when can I use and | in command if?

For example:

if a||b

if a| b

Thank you

Azzi Abdelmalek
on 26 Apr 2014

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

Azzi Abdelmalek
on 26 Apr 2014

dpb
on 26 Apr 2014

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

Jan
on 27 Apr 2014

@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.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!