MATLAB: Does this if statement fail

for loopif statementMATLAB

I have noticed this strange behavior and I just can't figure why this is happening.
I have a script looping through a certain parameter and then saving some output results for certain values of that parameter. The relevant part of the script is:
for Thr=0.4:0.1:0.7
disp(Thr);
if Thr==0.5
disp('but I am here?');
end
if Thr==0.6
disp('am i here?');
end
end
>>
0.4000
0.5000
but I am here?
0.6000
0.7000
For some reason, it the if statement doesnt recognize Thr value of 0.6. If I use a step of 0.01, same happens for Thr values of 0.59, 0.58 and 0.57. I didnt test much further than that.
What is happening here?

Best Answer

  • for Thr=0.4:0.1:0.7
    disp(Thr);
    if abs(Thr-0.5)<10^-3
    disp('but I am here?');
    end
    if abs(Thr-0.6)<10^-3
    disp('am i here?');
    end
    end
    Read about comparing floating point numbers. It seems you are checking some options, you need not to do this. Please read abour debugging MATLAB files.