【问题标题】:Using interp1 with time series将 interp1 与时间序列一起使用
【发布时间】:2015-01-03 11:41:49
【问题描述】:

我有以下数据集:

27/10/2014,11:45:00,231
27/10/2014,12:00:00,229
27/10/2014,12:15:00,NaN
27/10/2014,12:30:00,NaN
27/10/2014,12:45:00,227
27/10/2014,13:00:00,225
27/10/2014,13:15:00,NaN
27/10/2014,13:30:00,NaN
27/10/2014,13:45:00,222
27/10/2014,14:00:00,221
27/10/2014,14:15:00,NaN
27/10/2014,14:30:00,NaN
27/10/2014,14:45:00,219
27/10/2014,15:00:00,218
27/10/2014,15:15:00,NaN
27/10/2014,15:30:00,NaN
27/10/2014,15:45:00,214

我需要使用 interp1 命令插入缺失的数据:

date_string = strcat (dados.textdata(2:end,2),{' '}, dados.textdata(2:end,3));
 xdate = datenum (date_string, 'dd/mm/yyyy HH:MM:SS');
 xi = (1 :length(xdate))';
 yi = interp1 (xdate,dados.data,xi);

但是,yi 只返回 NaN。

如何绘制插值?

【问题讨论】:

  • 从输入中删除 NaN。

标签: matlab interpolation


【解决方案1】:

正如@AnonSubmitter85 提到的,您必须首先从输入中删除 nan。这可以通过以下方式完成:

r = ~isnan(dados.data);
yi = interp1(xdate(r),dados.data(r),xi);

但是,您可能还想使用xdate 而不是xi 作为插值数据的参数。

yi = interp1(xdate(r),dados.data(r),xdate);

然后输出为

【讨论】:

    猜你喜欢
    • 2014-01-02
    • 2014-05-10
    • 2018-05-25
    • 2010-10-22
    • 1970-01-01
    • 2011-11-18
    • 2019-12-17
    相关资源
    最近更新 更多