Find Function gives empty matrix

a=0:0.1:90;
V=find(a==3.4);
so when i type in the above code, it should give me the indice of where a=3.4, but instead, V is an empty matrix.
but if i try to find V=find(a==3.5), it works well...
i know this may due to tolerance and accuracy stuffs...but is there a quick way to fix this ?
Thank you for your help!

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 20 Apr. 2013

0 Stimmen

a=0:0.1:90
V=find(a==0.1*34)

4 Kommentare

Jay
Jay am 20 Apr. 2013
Thank you ! but could you please tell me how come it worked for 3.5 but not for 3.4?
Azzi Abdelmalek
Azzi Abdelmalek am 20 Apr. 2013
Bearbeitet: Azzi Abdelmalek am 20 Apr. 2013
0.1 and 3.4 are saved in memory with a certain precision, it's not obvious that 0.1*34 and 3.4 will be exactly equal. try:
3.4-0.1*34
It happens that they are equal
3.5==0.1*35
Jay
Jay am 20 Apr. 2013
thank you !
You can also use
tol=0.00001
V=find(abs(a-3.4)<tol)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by