How can I find the average between two points?
9 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!