array element not equal to equivalent double

조회 수: 4 (최근 30일)
Pierre-Vincent
Pierre-Vincent 2022년 11월 15일
댓글: Pierre-Vincent 2022년 11월 15일
I have the following code:
array=0.0001:0.0001:0.6;
x=0.0402
x = 0.0402
y=array(402)
y = 0.0402
test=x==y
test = logical
0
the result of the test is 0 and I really don't understand why... Both are supposed to be double. Can somebody help?
(the final idea is to find the index of X in the array with the find function)

채택된 답변

Matt J
Matt J 2022년 11월 15일
편집: Matt J 2022년 11월 15일
Because computers cannot do exact math. The difference between x and y beyond the 4th decimal place make this clear:
array=0.0001:0.0001:0.6;
x=0.0402
x = 0.0402
y=array(402)
y = 0.0402
x-y
ans = -6.9389e-18
  댓글 수: 2
Matt J
Matt J 2022년 11월 15일
편집: Matt J 2022년 11월 15일
Instead, you can do,
array=0.0001:0.0001:0.6;
x=0.0402;
idx=interp1(array,1:numel(array),x,'nearest')
idx = 402
Pierre-Vincent
Pierre-Vincent 2022년 11월 15일
thanks :)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by