NOT logical operators???

Pls help I dont understand the last line when i typed it in matlab
when A = [ 1 2 3 ]
A>2 is 0 0 1
but ~A is 0 0 0
I don't get the last part. shouldn't it be 1 1 0??? and if i put ~~ it is still 0 0 0.
what does this mean??
Thanks

Answers (1)

Walter Roberson
Walter Roberson on 31 Jan 2016

0 votes

It means you tested two different things. In the first one you tested (A>2) . In the second one you tested ~A, which is the same thing as ~(A~=0) which is the same thing as (A==0)
If you wanted the negation of (A>2) then you would use ~(A>2)

3 Comments

i meant ~(A>2) why is the answer 0 0 0 . I dont' get it thanks
I would suggest to you that what you typed in was
~A>2
The ~ operator has higher priority than the > operator, so that would be evaluated as
(~A)>2
and ~A is the same as (A~=0)
so ~A>2 is the same as (A~=0)>2
The result of (A~=0) is always 0 (false) or 1 (true), and neither 0 nor 1 are >2, so no matter what the input is, ~A>2 is always going to be false (or an error for other reasons.)
You need ~(A>2)
Stephen23
Stephen23 on 31 Jan 2016
Edited: Stephen23 on 31 Jan 2016
And the reason why this is so is explained here:
which clearly shows that logical negation has a higher precedence than the relational operators. This is why Walter Roberson's answer is correct.

Sign in to comment.

Asked:

on 31 Jan 2016

Edited:

on 31 Jan 2016

Community Treasure Hunt

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

Start Hunting!