我有一个问题,似乎应该有一个简单的答案,可以避免for循环。
假设我在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];
我觉得必须使用一种我缺少的“重塑”,“置换”和/或“移调”的组合在一行中完成此操作的简单方法。任何建议表示赞赏。
答案 0 :(得分:4)
您只缺少最后一个permute
。这是必需的,因为Matlab是主要列的,因此它将填充新数组,然后填充:
B = permute(reshape(A.', 2,2,N), [2 1 3]);