what will be displayd and why?

1 view (last 30 days)
David Shapiro
David Shapiro on 13 Mar 2015
Edited: Stephen23 on 22 May 2015
-------------------------------------
if (x)
disp('true');
else
disp('false');
end;
if (~x)
disp('true');
else
disp('false');
end;
----------------------------------------
For the case x=[0 0 0 0]
and for the case x=[0 1 0 1]
  1 Comment
Adam
Adam on 13 Mar 2015
Edited: Adam on 13 Mar 2015
Can't you just run the code to find out what is displayed?
You should generally use either 'all' or 'any' around a vector of logicals in an if statement though to avoid unexpected behaviour.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 13 Mar 2015
Edited: Stephen23 on 22 May 2015
This is explained quite clearly in the if documentation: "An expression is true when its result is nonempty and contains only nonzero elements (logical or real numeric). Otherwise, the expression is false."
Which means:
  • [0,0,0,0] is false: all values are zero
  • [0,1,0,1] is false: some values are zero
  • ~[0,0,0,0]=[1,1,1,1] is true: contains only nonzero elements
  • ~[0,1,0,1]=[1,0,1,0] is false: some values are zero
Note that the definition defines a true expression as "contains only nonzero elements" but does not give an upper-limit to the number of nonzero elements.

More Answers (2)

David Shapiro
David Shapiro on 13 Mar 2015
i did it but i did not understand why i got what i got. its a question from a quiz i had.

Image Analyst
Image Analyst on 13 Mar 2015
The all zero case is obvious. x=[0 0 0 0] is false no matter how you look at it - no way it can be true.
But if you have a case like [1 2 0 1] or [0 1 0 1] or [1,2,3,4], it will be true only if ALL of the elements are non-zero.
  2 Comments
David Shapiro
David Shapiro on 13 Mar 2015
but what is the condition " if x" means?
Adam
Adam on 13 Mar 2015
In this case (a vector) it seems to be shorthand for
if ( all(x) )
though I never tend to use that shorthand myself as I prefer the explicit use of all or any when using logicals for an if statement.

Sign in to comment.

Tags

Products

Community Treasure Hunt

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

Start Hunting!