10 views (last 30 days)

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!

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

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

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/547389-how-to-find-the-position-of-a-number-in-an-array#comment_895608

⋮## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/547389-how-to-find-the-position-of-a-number-in-an-array#comment_895608

Sign in to comment.