我有一个非常简单的问题,但我想知道是否有更简单的方法来解决它(它们必须是)。
我有一个10乘10的矩阵,包含double。我需要用这些数据点创建一个时间序列。
我这样做的方式如下。我创建了一个3D数组,其中thrid维度是时间。每天我通过将时间维度增加一个来在数组中添加新数据。
以下是代码:
TS_updated = zeros(size(TS_Current)+[0,0,1]);
TS_updated(:,:,1:end-1) = TS_Current;
TS_updated(:,:,end) = TS_New;
其中TS_Current是表示时间系列的现有3D数组,而TS_New是今天需要添加到时间序列的新数据。
是否有更快的方法来附加最后一个元素,例如2D表:
TS_updated = [TS_Current;TS_New];
甚至可能是一种更智能的方式来存储时间系列?
答案 0 :(得分:2)
您也可以使用
TS(:,:,end+1) = TS_new;
如果您打算每天更频繁地扩展系列,您可能还需要预先分配。当达到该限制时,您可以从任何长度和双倍空格开始。
没有明显更好的方法来安排我能看到的数据。您可以将其展平为100xTime而不是10x10xTime,但这取决于它是否会有所帮助。
答案 1 :(得分:1)
在第三维中使用cat
函数(documentation):
TS_updated = cat(3, TS_Current, TS_New);
您可以先使用
包含错误检查% Check dimensions 1 and 2 are consistent first
if size(TS_Current,1) == size(TS_New,1) && size(TS_Current,2) == size(TS_New,2)
% Now concatenate
TS_updated = cat(2, TS_Current, TS_New);
else
error('New time series has incorrect dimensions')
end
答案 2 :(得分:0)
你想在第三维中连接吗?
A=ones(3,3,2)
B=rand(3,3);
C=cat(3,A,B)