将N ^ 2 3x3矩阵连接成3Nx3N矩阵

Abo*_*azl 4 matlab matrix

我有N ^ 2个矩阵.每一个都是3x3矩阵.将它们连接到3Nx3N矩阵的一种方法是写入 A(:,:,i)= # 3x3 matrix i=1:N^2

矩阵

B=[A11 A12 ..A1N;A21 ...A2N;...] 但是当N很大是一项繁琐的工作.你有什么优惠?

gno*_*ice 6

这是一个非常快速的单线程,仅使用RESHAPEPERMUTE:

B = reshape(permute(reshape(A,3,3*N,N),[2 1 3]),3*N,3*N).';
Run Code Online (Sandbox Code Playgroud)

并测试:

>> N=2;
>> A = rand(3,3,N^2)
A(:,:,1) =
    0.5909    0.6571    0.8082
    0.7118    0.6090    0.7183
    0.4694    0.9588    0.5582
A(:,:,2) =
    0.1791    0.6844    0.6286
    0.4164    0.4140    0.5833
    0.1380    0.1099    0.8970
A(:,:,3) =
    0.2232    0.2355    0.1214
    0.1782    0.6873    0.3394
    0.5645    0.4745    0.9763
A(:,:,4) =
    0.5334    0.7559    0.9984
    0.8454    0.7618    0.1065
    0.0549    0.5029    0.3226

>> B = reshape(permute(reshape(A,3,3*N,N),[2 1 3]),3*N,3*N).'
B =
    0.5909    0.6571    0.8082    0.1791    0.6844    0.6286
    0.7118    0.6090    0.7183    0.4164    0.4140    0.5833
    0.4694    0.9588    0.5582    0.1380    0.1099    0.8970
    0.2232    0.2355    0.1214    0.5334    0.7559    0.9984
    0.1782    0.6873    0.3394    0.8454    0.7618    0.1065
    0.5645    0.4745    0.9763    0.0549    0.5029    0.3226
Run Code Online (Sandbox Code Playgroud)