我在matlab中有一个三维矩阵,我需要提取每一行来创建新的矩阵



我有一个以下形式的3d矩阵,

AA = [1,1;2,2];
BB = [1,1;2,2];
CC = [1,1;2,2];
ZZ = cat(3,AA,BB,CC)
NEW_CODE = [1 1; 1 1; 1 1; 2 2; 2 2; 2 2;]

基本上,我的代码以NEW_code的形式创建了一个矩阵,我需要将其传输回ZZ。

需要明确的是,从

NEW_CODE =
1     1
1     1
1     1
2     2
2     2
2     2

收件人,

ZZ(:,:,1) =
1     1
2     2

ZZ(:,:,2) =
1     1
2     2

ZZ(:,:,3) =
1     1
2     2

,我尝试过,但没有成功

attempt=NEW_CODE(:,1:3+1:end);

您可以使用reshape分割NEW_DATA矩阵的上下"两半",然后使用shiftdim根据需要重新排列结果

ZZ2 = shiftdim( reshape( NEW_CODE, [], 2, 2 ), 1 );

您可以使用返回true的isequal(ZZ,ZZ2)来检查这是否正确。

我现在没有Matlab的副本,所以你需要仔细检查这个

permute( reshape( NEW_CODE' , 2 , 3 , 2 ) , [ 1 3 2 ] )

最新更新