problem with if condition

hi, i have this problem with matlab. This is my m-file, but it doesnt work.
clear all
t=0:0.1:1;
k=length(t);
a=0;
for i=1:k
if a==0.8
disp('hi')
end
a=a+0.1
end
If i use this one
t=0:1:10;
k=length(t);
a=0;
for i=1:k
if a==8
disp('hi')
end
a=a+1
end
this one works well. The difference between first and second case is only that some variables are increased 10times. Please help. thank you

 Akzeptierte Antwort

Aldin
Aldin am 9 Mär. 2012

0 Stimmen

Solution:
Here, try this algorithm:
clear all
t=0:0.1:1;
k=length(t);
a=0;
for i=1:k
b = num2str(a);
if strcmp(b,'0.8');
disp('hi')
end
a=a+0.1;
end

5 Kommentare

milan pepa
milan pepa am 9 Mär. 2012
thank you
Dont you know the reason why it works wrong in second case?
Aldin
Aldin am 9 Mär. 2012
I don't know. Maybe cause 0.8 is not equal to 0.8000 by using for loop.
Are you from Yugoslavia?:) See Walter Roberson link:
http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
Aldin
Aldin am 9 Mär. 2012
Accept Answer if i was helpful.
Walter Roberson
Walter Roberson am 9 Mär. 2012
Using the string solution is not recommended. Instead use a tolerance on the comparison.
milan pepa
milan pepa am 9 Mär. 2012
thank you Walter, it works great

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

G A
G A am 9 Mär. 2012

0 Stimmen

2 Kommentare

Walter Roberson
Walter Roberson am 9 Mär. 2012
http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
milan pepa
milan pepa am 9 Mär. 2012
thank you

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by