Interpolation with NaN: how to interpolate a vector so it DOES contract the NaN
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Matt J
2017-11-26
If you mark missing data by putting NaNs in "b" instead of in "a", then you will be able to interpolate freely.
3 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!