Info

この質問は閉じられています。 編集または回答するには再度開いてください。

Subscript assignment mismatch with the use of 'find'

1 回表示 (過去 30 日間)
aditya
aditya 2011 年 8 月 31 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
The following as commands typed in the command window with the results:
>> X = 0:0.001:1;
>> find(X==0.57)
ans =
Empty matrix: 1-by-0
>> X(571)
ans =
0.5700
I cannot figure out why find doesn't work. I stumbled on it accidentally. This works if choose to find any other number except a special few like 0.47, 0.67, 0.41...

回答 (3 件)

Arturo Moncada-Torres
Arturo Moncada-Torres 2011 年 8 月 31 日
I recommend you to look at this part of the MATLAB FAQ. This explains the results you are getting.
  1 件のコメント
Paulo Silva
Paulo Silva 2011 年 8 月 31 日
+1 vote for mentioning the FAQ

Fangjun Jiang
Fangjun Jiang 2011 年 8 月 31 日
floating point comparison!!!

aditya
aditya 2011 年 8 月 31 日
Thanks. But in that case...using '==' should not give a result for a lot more cases.
Also,
using linspace instead of colons for defining the vector (here, X) seems to solve the problem. I do not like the approach of comparing difference with tolerance as given in the FAQ...it is not really a good solution in my opinion.
  1 件のコメント
Walter Roberson
Walter Roberson 2011 年 9 月 2 日
Using tolerances is the only practical solution unless you have a system that has extensive interval-arithmetic operations built in. Building in that level of interval-arithmetic is hard!!

この質問は閉じられています。

製品

Community Treasure Hunt

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

Start Hunting!

Translated by