我在MATLAB中有一个多维时间序列。让我们说它是M维,N个样本,因此我把它存储在NxM矩阵中。
我想插入时间序列,以适应新的长度(N1),其中N总是小于N1。
换句话说,如果我有多个时间序列(所有时间序列都以相同的速率采样,只是长度不同),我想将它们全部插入到N0的长度。
如何用MATLAB实现这一目标?
编辑:可以用imresize实现这个目标吗?
即:
A = randn(5,10) % 10 dimensions, 5 samples
desiredLength = 15; % we want 15 samples in lenght
newA = imresize(A, [desiredLength 10], 'bilinear');
答案 0 :(得分:2)
如下所示的程序可能会执行您想要的操作。新数据将是旧数据的线性插值。
[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
时第二个网格维度相同。
答案 1 :(得分:0)
如果您有timeseries
个对象,您可能还想查看resample
对象的timeseries
方法:
http://www.mathworks.co.uk/help/matlab/ref/timeseries.resample.html