[英]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.