Interpolation with NaN: how to interpolate a vector so it DOES contract the NaN
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear All, I have the following problem:
There are the following vectors:
a = [-1, 0.15, 0.7, 0.9, 1.1, 1.98, NaN, NaN, 2.7, 2.9, 3.1, NaN, NaN, NaN],
b = randn(length(a))
x = 0:5
I would like to interpolate x on a:
V = interp1(a,b,x)
Unfortunately, vector a contains NaN, which makes it impossible. I could use
V = interp1(a(~isnan(a)),b(~isnan(a)),x)
but then I get crude interpolation for values, in this case, between 1.98 and 2.7 while they should in fact do not exist, i.e. they should get NaN. How to do it ? How can I 'transfer' NaN values from vector a to vector x so that all x values that are next to NaN in a turn into NaNs and I can use interp1(a(~isnan(a)),b(~isnan(a)),x) getting proper results ?
Any help would be appreciated!
0 commentaires
Réponses (1)
Matt J
le 26 Nov 2017
If you mark missing data by putting NaNs in "b" instead of in "a", then you will be able to interpolate freely.
3 commentaires
Voir également
Catégories
En savoir plus sur Interpolation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!