Why find cannot handle this very simple task?
    6 views (last 30 days)
  
       Show older comments
    
X = -0.1:.001:.25;
find(X == .077)
I get the following:
ans = 1×0 empty double row vector
However X(178) =  0.077. How to get back index 178?
0 Comments
Answers (2)
  Stephan
      
      
 on 19 Apr 2021
        You are dealing with doubles, they are not precisly 0.077 - use round:
X = -0.1:.001:.25;
find(round(X,3) == .077)
3 Comments
  Steven Lord
    
      
 on 27 Apr 2021
				I wouldn't use round here. Decide how close is "close enough" and use that as the tolerance.
X = -0.1:0.001:0.25;
closeEnough = 1e-8;
X(find(abs(X-0.077) < closeEnough))
Or work with integer values and convert to non-integer values as needed:
X2 = -100:250;
X2(X2 == 77)/1000
Or use ismembertol which tries to choose a good "close enough" tolerance.
X(ismembertol(X, 0.077))
  Jan
      
      
 on 27 Apr 2021
        Welcome to the world of calculations with numbers represented with limited precision.
0 Comments
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


