pix = 0.001;
a = -1:pix:1;
find(a==0.1)
ans = 1×0 empty double row vector
配列aには0.1が格納されているにもかかわらず,findでインデックスを得ることができません.
ほかに要素のインデックスを得る方法がありましたら教えていただけると幸いです.

답변 (1개)

Dyuman Joshi
Dyuman Joshi 2024년 2월 16일
편집: Dyuman Joshi 2024년 2월 16일

3 개 추천

Welcome to the world of floating point numbers, where not all numbers can be represented exactly in binary form.
When comparing floating point numbers, the best practice is to use a tolerance -
pix = 0.001;
a = -1:pix:1;
tol = 1e-6;
idx = find(abs(a - pix) < tol)
idx = 1002
%check
a(idx)
ans = 0.0010
You can also use ismembertol -
k = ismembertol(a, pix);
IDX = find(k)
IDX = 1002

카테고리

도움말 센터File Exchange에서 ラベルと注釈에 대해 자세히 알아보기

제품

질문:

2024년 2월 16일

편집:

2024년 2월 16일

Community Treasure Hunt

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

Start Hunting!