How can I find the average between two points?
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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 Commenti
  David Schubert
 il 20 Lug 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.
Risposta accettata
  Walter Roberson
      
      
 il 20 Lug 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 Commenti
Più risposte (1)
  David Schubert
 il 20 Lug 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 Commenti
Vedere anche
Categorie
				Scopri di più su Operators and Elementary Operations in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


