繁体   English   中英

MATLAB:将N x 4阵列置换并重新整形为2 x 2 x N阵列

[英]MATLAB: Permute and reshape a N x 4 array into a 2 x 2 x N array

我有一个问题似乎应该有一个简单的答案,可以避免循环。

假设我在MATLAB中定义了一个N x 4数组:

A = [1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4];

在这个例子中, N = 6,但它是任意的。 我想将A重新排列成一个新的数组B ,它是2 x 2 x N形式的数组:

B(:,:,1) = [1 2; 3 4];
B(:,:,2) = [1 2; 3 4];

...

B(:,:,N) = [1 2; 3 4];

这似乎是一个简单的问题,我尝试了各种各样的事情,如:

B = reshape(A',2,2,N);

然而,这导致了

B(:,:,1) = [1 3; 2 4];
B(:,:,2) = [1 3; 2 4];

...

B(:,:,N) = [1 3; 2 4];

我觉得必须有一种简单的方法,可以使用“重塑”,“置换”和/或“转置”的一些组合在一行中完成此操作。 任何建议表示赞赏。

你只是缺少一个最后的permute 这是必需的,因为Matlab是列专业,所以它填充新数组,然后跨:

B = permute(reshape(A.', 2,2,N), [2 1 3]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM