Using NaN in if and interp1 commands
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Volkan Yangin
 el 25 de Mzo. de 2017
  
    
    
    
    
    Comentada: Volkan Yangin
 el 25 de Mzo. de 2017
            Hi everbody, I have 6 values and some values are NaN. If interp1 command finds the final value as NaN for giving ' c' value, MATLAB must give me error message.
a=[1 2 3 4 5 6];
b=[10 15 20 NaN NaN NaN];
c=[1.5 4 3.5 4.5 5.1 5.9];
for g=1:1:numel(a)
if interp1(a,b,c(g))==NaN;
        disp('There is a mistake here')
   end
end
But MATLAB does't run this command with NaN values.
 *In interp1 at 178
Warning: NaN found in Y, interpolation at undefined values
   will result in undefined values.*
How can i achieve this problem? How can i use NaN values in interp1 and if command? I get the problems when i use isnan.
Thanks...
2 comentarios
  per isakson
      
      
 el 25 de Mzo. de 2017
				c(g) is a scalar. Why not replace
if interp1(a,b,c(g))==NaN;
by
if isnan( interp1(a,b,c(g)) )
?
Respuesta aceptada
  Jan
      
      
 el 25 de Mzo. de 2017
        
      Editada: Jan
      
      
 el 25 de Mzo. de 2017
  
      It is tzhe definition of NaN, that any comparison with it is false, even NaN == NaN. Therefore
if interp1(a,b,c(g))==NaN;
will most likely not do, what you expect. I assume you want:
for g = 1:numel(c)   % Not numel(a) !??
  cg = interp1(a, b, c(g));
  if isnan(cg)
    disp('There is a mistake here')
  end
end
Or without a loop:
cg = interp1(a, b, c);
if any(isnan(cg))
  disp('There is a mistake here')
end
I do not get a warning in R2016b.
1 comentario
Más respuestas (0)
Ver también
Categorías
				Más información sobre Interpolation of 2-D Selections in 3-D Grids 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!


