MATLAB中时间序列数据的插值
我在MATLAB中有一个多维时间序列。假设它是M维的,N个样本,因此我将它存储在NxM矩阵中 我想插值时间序列,以适应新的长度(N1),其中N总是小于N1 换句话说,如果我有多个时间序列(都是以相同的速率采样的,只是长度不同),我想把它们都插值为长度N0 如何用MATLAB实现这一点 编辑:可以用imresize实现吗 i、 e:MATLAB中时间序列数据的插值,matlab,interpolation,Matlab,Interpolation,我在MATLAB中有一个多维时间序列。假设它是M维的,N个样本,因此我将它存储在NxM矩阵中 我想插值时间序列,以适应新的长度(N1),其中N总是小于N1 换句话说,如果我有多个时间序列(都是以相同的速率采样的,只是长度不同),我想把它们都插值为长度N0 如何用MATLAB实现这一点 编辑:可以用imresize实现吗 i、 e: 下面这样的过程可能会执行您想要的操作。新数据将是旧数据的线性插值 [initSize1, initSize2] = ndgrid(1:size(Data, 1), 1
下面这样的过程可能会执行您想要的操作。新数据将是旧数据的线性插值
[initSize1, initSize2] = ndgrid(1:size(Data, 1), 1:size(Data, 2));
[newSize1, newSize2] = ndgrid(linspace(1, size(Data, 1), newlength), 1:size(Data, 2));
newData = interpn(initSize1, initSize2, Data, newSize1, newSize2);
向上编码时,只有维度1应该更改,因为在对
ndgrid
的第一次和第二次调用中,第二个网格化维度是相同的。如果您有timeseries
对象,您可能还需要查看timeseries
对象的重采样方法:
如果我理解正确,griddatan
和/或interpn
可能会起作用。我想这会满足我的需要。:-)非常感谢。
[initSize1, initSize2] = ndgrid(1:size(Data, 1), 1:size(Data, 2));
[newSize1, newSize2] = ndgrid(linspace(1, size(Data, 1), newlength), 1:size(Data, 2));
newData = interpn(initSize1, initSize2, Data, newSize1, newSize2);