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

 Respuesta aceptada

Aldin
Aldin el 9 de Mzo. de 2012

0 votos

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 comentarios

milan pepa
milan pepa el 9 de Mzo. de 2012
thank you
Dont you know the reason why it works wrong in second case?
Aldin
Aldin el 9 de Mzo. de 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 el 9 de Mzo. de 2012
Accept Answer if i was helpful.
Walter Roberson
Walter Roberson el 9 de Mzo. de 2012
Using the string solution is not recommended. Instead use a tolerance on the comparison.
milan pepa
milan pepa el 9 de Mzo. de 2012
thank you Walter, it works great

Iniciar sesión para comentar.

Más respuestas (1)

G A
G A el 9 de Mzo. de 2012

0 votos

2 comentarios

Walter Roberson
Walter Roberson el 9 de Mzo. de 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 el 9 de Mzo. de 2012
thank you

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 9 de Mzo. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by