我希望元素(3,2)来自一个大小为(4,4)的矩阵,从另一个矩阵中逐一尝试第一列的值,大小为(3,3)

时间:2017-05-06 21:21:12

标签: matlab matrix

例如:如果我有矩阵A和矩阵B:

A =

 7     4     1
 4     5     6
 3     6     9
  
    

B =零(4,4)

  

B =

 0     0     0     0
 0     0     0     0
 0     0     0     0
 0     0     0     0

我希望我希望矩阵B中的元素(3,2)具有大小(4,4)来尝试矩阵A中第一列的值,其大小为(3,3),并且每次都产生新矩阵。所以,输出将是:

B =

 0     0     0     0
 0     0     7     0
 0     0     0     0
 0     0     0     0

B =

 0     0     0     0
 0     0     4     0
 0     0     0     0
 0     0     0     0

B =

 0     0     0     0
 0     0     3     0
 0     0     0     0
 0     0     0     0

我该怎么做?

1 个答案:

答案 0 :(得分:1)

一种简单的方法是将3D矩阵转换为1D向量。您现在可以编写一个循环遍历此向量的函数,并每次构建它的不同排列。从每个排列中,您可以重建3D矩阵。

对于大小为N的向量,有多少可能的排列?
答案是:N!

function m = computerDifferentPerm(A)
    vec = A(:).';
    m = perms(vec);
end

现在mN! x N矩阵 每条线是对应于原始矩阵的一个排列的向量。您现在必须将每个重建为3D矩阵。