Why does "find" command fail to find a number in this vector?
    6 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Emmanuele Mereu
 am 12 Apr. 2017
  
    
    
    
    
    Bearbeitet: Stephen23
      
      
 am 12 Apr. 2017
            Hello everybody, I use MATLAB as a beginner and I would like to understand why the "find" command does not work in this particular case.
I must know the position occupied by the number 0.24 in this vector:
v=0.01:0.01:4;
In the variable editor I see that 0.2400 is stored in row 1, column 24, so I wrote this instruction:
pointer=find(v==0.24)
in the workspace without ";" so that i can see the output, but instead of "pointer=24" as I expected this message appeared:
"pointer = 1×0 empty double row vector"
How is that possible?
Also, if I search other numbers it happens that "find" can determine the position of, for example, 0.25 but it returns the same message of empty vector searching 0.29.
Thaks.
2 Kommentare
Akzeptierte Antwort
Weitere Antworten (2)
  Santhana Raj
      
 am 12 Apr. 2017
        The issue is with representation of floating point numbers. Since the variable 'v' is double, it cannot exactly represent/store 0.024. Hence you cannot compare for exact value. Instead you can try this:
find((v<=0.245) & (v>=0.239))
Hope this helps.
0 Kommentare
  Thorsten
      
      
 am 12 Apr. 2017
        You can use
find(round(100*v) == 24)
The reason that the straight-forward approach does not work is the representation of floating point numbers, as already mentioned above.
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Introduction to Installation and Licensing finden Sie in Help Center und File Exchange
			
	Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




