Finding and replacing numbers with NaN
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    SChow
 el 21 de Jul. de 2020
  
    
    
    
    
    Comentada: SChow
 el 21 de Jul. de 2020
            Hello,
I have a matrix where the numbers only made up of 9 are fill values and should be replaced by NaN.;
For eg: There are numbers in all sorts of combinations : 99.999, 99999.99, 9999.9 99.999999, 999999.99 ....
A bit lost on how to proceed, 
Making a list like below is not easy because there are n number of combinations which is not known
  P(P==9999999.99)=NaN;
  P(P==999999.99)=NaN;
  P(P==9999.99)=NaN;
  P(P==99999.99)=NaN;
0 comentarios
Respuesta aceptada
  Image Analyst
      
      
 el 21 de Jul. de 2020
        Try ismembertol().  Something like (untested)
Lia = ismembertol(P, 9, 0.0001);
P(Lia) = NaN;
Lia = ismembertol(P, 9.9, 0.0001);
P(Lia) = NaN;
Lia = ismembertol(P, 9.99, 0.0001);
P(Lia) = NaN;
Hopefully there is just a limited number of cases, like 10 or so.  If you really might have dozens of possibilities then you should create a list somehow, like perhaps a for loop with sprintf() and str2double
for k1 = 1 : 10
	str = repmat('9', [1, k1])
	for k = 1 : length(str)
		str2 = [str(1:k), '.', str(k+1:end)]
		num = str2double(str2)
	end
end
Más respuestas (1)
  Cris LaPierre
    
      
 el 21 de Jul. de 2020
        I would suggest using the standardizemissing function. I don't think you are going to be able to get around having to make a list, though. I can't think of a good way for MATLAB to recognize numbers just containing 9's.
Ver también
Categorías
				Más información sobre Logical en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


