如何在Matlab中将一些矩阵随机排列成更大的矩阵?

Han*_*ieh 3 matlab

这是主矩阵:

a =

 1     2     3     3     4     5     2     5     7
 3     4     5     5     6     8     6     4     9
Run Code Online (Sandbox Code Playgroud)

这个主矩阵包含 3 个小矩阵。第一个是:

 [1 2 3;3 4 5]
Run Code Online (Sandbox Code Playgroud)

第二个是:

 [3 4 5;5 6 8]
Run Code Online (Sandbox Code Playgroud)

第三个是:

 [2 5 7;6 4 9]
Run Code Online (Sandbox Code Playgroud)

我想像这样将这 3 个矩阵随机排列到主矩阵中:

 a =

 2     5     7     3     4     5     1     2     3
 6     4     9     5     6     8     3     4     5
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

Dan*_*iel 5

如果连接三个2D矩阵,最好使用3D矩阵:

%get a 3d matrix
b=reshape(a,size(a,1),3,[]);
%randomly permute third dimension
c=b(:,:,randperm(size(b,3)));
%return to 2d representation
d=reshape(c,size(a));
Run Code Online (Sandbox Code Playgroud)