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!