IF statements with zero
14 ビュー (過去 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!