Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MATLAB:将一个nx4数组置换并重塑为一个2x2xn数组_Arrays_Matlab_Reshape_Transpose - Fatal编程技术网

Arrays MATLAB:将一个nx4数组置换并重塑为一个2x2xn数组

Arrays MATLAB:将一个nx4数组置换并重塑为一个2x2xn数组,arrays,matlab,reshape,transpose,Arrays,Matlab,Reshape,Transpose,我有一个问题,似乎它应该有一个简单的答案,可以避免for循环 假设我在MATLAB中定义了一个nx4数组: 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]; 这似乎

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

假设我在MATLAB中定义了一个nx4数组:

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];

我觉得必须有一种简单的方法,在一行中使用我所缺少的“重塑”、“置换”和/或“转置”的组合来实现这一点。感谢您的建议。

您只错过了一个决赛。这是必需的,因为Matlab是主要列,所以它向下填充新数组,然后跨:

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