对时间序列使用interp1 [英] Using interp1 with time series

查看:0
本文介绍了对时间序列使用interp1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据集:

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的。

如何绘制插值值?

推荐答案

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

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

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

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

然后输出

这篇关于对时间序列使用interp1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆