IF statements with zero

14 views (last 30 days)
Lisa Collins
Lisa Collins on 21 Oct 2011
Does matlab have a problem with the number zero? I am learning the basics and trying out an if statement in an m-file called sorttemp to sort ones and zeros in a vector to become either 14 or 19 , but why are all my answers 19...?
EDU>> clear
EDU>> a = [ 0 0 1 1 0 0 ]
a =
0 0 1 1 0 0
EDU>> sorttemp
b =
19 19 19 19 19 19
EDU>>
%sorttemp
n = 1:6;
if a(1,n) <= 0.5;
b(1,n) = 14;
else b(1,n) = 19
  2 Comments
Fangjun Jiang
Fangjun Jiang on 21 Oct 2011
You can use {}Code format next time.
Lisa Collins
Lisa Collins on 23 Oct 2011
Thanks to all who answered, I appreciate it! I now realise the if statement looks at the whole thing not individual elements... I am going to make this more complicated now and develop this so when the sequence goes 0 to 1 the answer is 16. I assumed that b is unknown but accept that it could be set up to have a default value of all 19's.

Sign in to comment.

Accepted Answer

Wayne King
Wayne King on 21 Oct 2011
Hi Lisa,
a = [ 0 0 1 1 0 0 ];
b = [ 19 19 19 19 19 19];
for n = 1:6
if (a(n) <=0.5)
b(n) = 14;
else
b(n) = 19;
end
end
but more efficient in MATLAB is simply:
b(a<=0.5) = 14;
  1 Comment
Wayne King
Wayne King on 21 Oct 2011
in other words, try
b = [19 19 19 19 19 19];
a = [ 0 0 1 1 0 0 ];
b(a<=0.5) = 14;

Sign in to comment.

More Answers (1)

Jan
Jan on 21 Oct 2011
The actual question is: Why are all b set to 19.
n = 1:6;
if a(1,n) <= 0.5
This means explicitely:
if [0, 0, 1, 1, 0, 0] <= 0.5
Now Matlab performs the comparison elementwise:
if [true, true, false, false, true, true]
Finally if needs a single value to decide for a branch, therefore in includes an all automatically:
if all([true, true, false, false, true, true])
No, not all of these values are true, therefore if uses the else branch:
b(1, 1:6) = 19
All b are set to 19.
NOTE: To be exact if inserts: all(condition) && ~isempty(condition).

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!