IF statements with zero
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Wayne King
am 21 Okt. 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 Kommentar
Wayne King
am 21 Okt. 2011
in other words, try
b = [19 19 19 19 19 19];
a = [ 0 0 1 1 0 0 ];
b(a<=0.5) = 14;
Weitere Antworten (1)
Jan
am 21 Okt. 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).
0 Kommentare
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!