How to find the position of a number in an array?

조회 수: 29 (최근 30일)
CS
CS 2020년 6월 12일
편집: Matt J 2020년 6월 13일
I have a column vector Y which is 7306409x1 double. I want to find the position (indices) of a specifric number (8) in Y. I used
k=find(Y==8)
But MATLAB gives the answer
k =
0×1 empty double column vector
and does not show the indices. I think the problem is something with the "double". Does anyone know how to solve this?
Thanks!

답변 (2개)

Matt J
Matt J 2020년 6월 12일
편집: Matt J 2020년 6월 12일
There is nothing wrong with your code as long as there are elements in Y that are exactly equal to 8
>> Y=[8 1 2 5 8 6];
>> k=find(Y==8)
k =
1 5
Suprises may happen, however, if Y contains floating point inaccuracies that you can't see on the screen,
>> Y=[8 1 2 5 8 6] + 10*eps,
Y =
8.0000 1.0000 2.0000 5.0000 8.0000 6.0000
>> k=find(Y==8)
k =
1×0 empty double row vector
One solution is to round,
>> k=find(round(Y)==8)
k =
1 5
  댓글 수: 4
CS
CS 2020년 6월 12일
format long will show the long format of numbers in the command window. My question is regarding to how show the long format of numbers in the Variables window?
Matt J
Matt J 2020년 6월 13일
편집: Matt J 2020년 6월 13일
My question is regarding to how show the long format of numbers in the Variables window?
That can be adjusted in the view tab
However, rather than relying on copy-paste, I think it would be better to simply do,
k=find(Y==Y(283))

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


madhan ravi
madhan ravi 2020년 6월 12일
편집: madhan ravi 2020년 6월 12일
k = find( (abs(Y) - 8) < 1e-2 ) % where 1e-2 is the tolerance

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by