interp1 中的样条插值,不填充 nan 值

Spline interpolation in interp1 without filling nan values in

我每 5 分钟进行一次潮汐观测,我想将其插入到 1 分钟的间隔中。

我尝试在 Python 中完成,但它需要太多时间,所以我已经转向 MATLAB。问题是样条方法填充了 NaN 值。

下图解释了这个问题,我想在不填充 NaN 值的情况下进行样条插值。我怎样才能让我的 interp1 功能做到这一点?

file='NANTES_5min_nan.txt'
[date, hauteur] = lecture_hfs(file);
vect=[date(1):1/24/60:date(end)];
h_interp=interp1(date,hauteur,vect,'spline');

h_interp_lin=interp1(date,hauteur,vect,'linear');

第二个数字来自Python插值。结果很好,但不幸的是,它仅适用于 1 个月的数据。当我想将它应用于整个数据(17 年)时,执行永远不会结束 here is the link for python figure

不是直接使用 vect 作为查询点,您可以用 [=13= 替换 hauteur 中接近 NaN 值的 vect 值].这可以通过使用另一个(线性)插值来完成:

temp = date; % copy of the original dates
temp(isnan(hauteur))=NaN; % set the values which are NaN in hauteur to NaN
h_interp = interp1(date,hauteur,interp1(date,temp,vect),'spline'); % the inner interpolation results in vect with NaNs where appropriate 

有点乱,可能还有更优雅的方法,但我对通过嵌套另一个插值来解决这个问题的可能性很着迷。