How can I find the average between two points?
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sandy
 el 20 de Jul. de 2015
  
    
    
    
    
    Comentada: Sandy
 el 20 de Jul. de 2015
            So, I basically have a column of data composed of numbers and NaNs. I want my code to go through the column and wherever it finds an NaN, I want it to replace it with the average of the number before and after that NaN. For example:
Input:
23
45
64
NaN
32
Result:
23
45
64
48
32
Please help and thank you so much! :)
2 comentarios
  David Schubert
 el 20 de Jul. de 2015
				input = [23; 45; 64; NaN; 32];
output = input;
idx = find(isnan(input));
output(idx) = (input(idx+1)+input(idx-1))/2
However this will only work if the first and the last elements are not NaN.
Respuesta aceptada
  Walter Roberson
      
      
 el 20 de Jul. de 2015
        idx = isnan(Input);
Result = Input;
Result(idx) = (Input(idx-1) + Input(idx+1)) / 2;
This depends upon the NaN not being the first or last entry.
See also John D'Errico's File Exchange contribution inpaint_nans
0 comentarios
Más respuestas (1)
  David Schubert
 el 20 de Jul. de 2015
        input = [23; 45; 64; NaN; 32];
output = input;
idx = find(isnan(input));
output(idx) = (input(idx+1)+input(idx-1))/2
However this will only work if the first and the last elements are not NaN.
0 comentarios
Ver también
Categorías
				Más información sobre Operators and Elementary Operations 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!


