IF statements with zero
10 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Wayne King
2011-10-21
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 个评论
Wayne King
2011-10-21
in other words, try
b = [19 19 19 19 19 19];
a = [ 0 0 1 1 0 0 ];
b(a<=0.5) = 14;
更多回答(1 个)
Jan
2011-10-21
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).
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!