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!

 採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 4 月 20 日

0 投票

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

4 件のコメント

Jay
Jay 2013 年 4 月 20 日
Thank you ! but could you please tell me how come it worked for 3.5 but not for 3.4?
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 4 月 20 日
編集済み: Azzi Abdelmalek 2013 年 4 月 20 日
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 2013 年 4 月 20 日
thank you !
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 4 月 20 日
You can also use
tol=0.00001
V=find(abs(a-3.4)<tol)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by