我想从一个随时间变化的矩阵中形成一组新矩阵



我有一个名为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:164*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

最新更新