我有一个名为xnt
的数据矩阵,大小16*96
。我将这些数据分解为重叠的窗口,如下所示:
WL = 4;
for t = 4:96
X_time_Total(:,:,t) = xnt(:,[(t-WL+1):t]);
end
现在我有了X_time_Total
,这是一个16*4*96
矩阵。
接下来我形成一个新的16*16*93
矩阵Four_Xt
,它结合了之前形成的每四个连续窗口:
for tt = WL:93
Four_Xt(:,:,tt)=[X_time_Total(:,:,tt),X_time_Total(:,:,tt+1),X_time_Total(:,:,tt+2),X_time_Total(:,:,tt+3)];
end
该Four_Xt(:,:,tt)
的第一行是第一个4*4
矩阵ujTt
的向量形式,第二行是通缉4*4
矩阵ujTt
的第二行。Four_Xt(:,:,tt)
有 16 行,所以我有 16 个大小为 4*4 的ujTt
(对于一个时间tt
)。
问题是:我想要一个新的4*4*16
矩阵,称为U
,每次tt:WL,...
。
对于j = 1:16
,4*4
矩阵层由Four_Xt
组成,如下所示:
ujTt(:,:,j)=[Four_Xt(j,tt-WL+1:tt);
Four_Xt(j,tt-WL+2:tt+1);
Four_Xt(j,tt-WL+3:tt+2);
Four_Xt(j,tt-WL+4:tt+3)];
ujTt
必须随时间而变化,因为Four_Xt
随时间而变化。我怎样才能tt
和所有j=1:16
拥有ujTt
?
我为此写了以下内容,但不正确。
ujTt_temp=[];
for tt=WL:93
for j=1:N
ujTt(:,:,j)=[Four_Xt(j,tt-WL+1:tt);Four_Xt(j,tt-WL+2:tt+1);Four_Xt(j,tt-WL+3:tt+2);Four_Xt(j,tt-WL+4:tt+3)];
ujTt_temp(:,:,tt) = ujTt(:,:,j);
end
ujTt_all=[ujTt_temp;ujTt_temp];
end
至少对我来说有点混乱。我感谢任何帮助。
如果我理解正确,您到达了一个点,即您有一个包含所有数据的16*16*93
矩阵,并且您想将 16 行中的每一行拆分为一个4*4
矩阵?您可以使用以下方法reshape
将其转换为4*4*16*93
矩阵:
U = reshape(Four_Xt, 4, 4, 16, 93);
然后你有 93 个大小为4*4*16
t = 27; % 27th sub-matrix;
ujTt = U(:,:,:,t); % 4*4*16 matrix