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

103 views (last 30 days)
CS on 12 Jun 2020
Edited: Matt J on 13 Jun 2020
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)
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!
madhan ravi on 12 Jun 2020
Is Y integer or double?

Matt J on 12 Jun 2020
Edited: Matt J on 12 Jun 2020
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
CS on 12 Jun 2020
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 on 13 Jun 2020
Edited: Matt J on 13 Jun 2020
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 on 12 Jun 2020
Edited: madhan ravi on 12 Jun 2020
k = find( (abs(Y) - 8) < 1e-2 ) % where 1e-2 is the tolerance