Couldn't find the position of a value in vector

tryna find a value's location but gives me empty double row vector, why?
My vector is q and its size 1x4406 double. couldn't find out where 0.0500 is. Tried to use this " k=find(q==0.0500) " but didn't get anything worth.
Thanks in advance

 Accepted Answer

The value is not exactly equal to 0.05, due to floating point representation. Try
tol = 1.e-6;
k=find(abs(q-0.0500)<tol);

5 Comments

Didn't work. still gives empty vector Actually, i'd not able to understand why you substract 0.0500.
Edit: I go through the actual vector q, to find out where 0.0500 is, and there're 3 pieces. meaning more than one. Is that why matlab couldn't give me the location? How can I get the first 0.0500's location then.
Can you put the vector q in a MAT file and upload it?
here it is. Thanks for your time by the way.
Here are the elements that are nearest 0.05. Note that none of them are equal to 0.05. They are also not even with 1.e-6, which is why my code did not work.
You can change my value of tol to get as close as you need.
format long
q(2198:2206)
ans =
Columns 1 through 6
0.049918594104308 0.049941269841270 0.049963945578231 0.049986621315193 0.050009297052154 0.050031972789116
Columns 7 through 9
0.050054648526077 0.050077324263039 0.050100000000000
how i couldn't think that! Thank you so much. I appreciate.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!