我有以下数据集:
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&#39。
如何绘制插值?
答案 0 :(得分:3)
正如@ AnonSubmitter85所提到的,你首先要从输入中删除nan。这可以通过以下方式完成:
r = ~isnan(dados.data);
yi = interp1(xdate(r),dados.data(r),xi);
但是,您可能还希望使用xdate
而不是xi
作为插值数据的参数。
yi = interp1(xdate(r),dados.data(r),xdate);
然后输出为