matlab怎么对矩阵内元素进行全排列?排列后依旧是一个矩阵,不是一串字符,保持二维的特性

matlab怎么对矩阵内元素进行全排列?排列后保持矩阵的二维特性

我现在有一个矩阵6*8的矩阵B,里面有48个元素。我希望将这些元素进行全排列(打个比方,就好像48个学生,要做在教室里面的48个座位里面)我听说有个函数是perms,可以全排列,但是那个只能排列出一维的情况。我希望全排列之后的矩阵还是保持一个矩阵的形式

例如:

[1,2;3,4]全排列 → [2,1;3,4], [2,1;4,3],[1,3;2,4]...........

更棘手的问题,如果一个这个B矩阵里面是由A1.A2...A48个小矩阵所构成,这样有该怎么办呢?
有人建议首先将这个矩阵中的48个元素都展开变成一维的,然后用perms,全排列,然后分别储存1~8,9~16,17~24,25~32等等,然后再重新合并成一个矩阵,但是不知道在语法上怎么实现

可以用reshape函数。
例如,行向量: a = [1 2 3 4 5 6] 执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
若a=[1 2 3
4 5 6
7 8 9]
使用reshpe后想得到
b=[1 2 3 4 5 6 7 8 9]
只需要将a转置一下就可以了: b=reshape(a',1,9)
不知道有没有帮你解决问题?
温馨提示:答案为网友推荐,仅供参考