找到N个向量的所有排列并构建这些向量的每个可能组合

时间:2015-12-05 10:13:54

标签: matlab matrix vector combinations permutation

给出N行向量。对于每个向量,我找到其元素的所有唯一排列(通过获得更多向量)。现在我想找到这些载体的所有可能组合。

示例:设N = 3,并将矢量称为v1,v2,v3。使用

unique(perms(vi),'rows');

我为每个向量创建所有唯一的排列。假设v1有1个唯一的排列(称为v1p1),v2(v2p1,v2p2)有2个,v3(v3p1 ... v3p4)有4个。我现在要生成的是组合向量:

[ v1p1 v2p1 v3p1 ]
[ v1p1 v2p1 v3p2 ]
[ v1p1 v2p1 v3p3 ]
[ v1p1 v2p1 v3p4 ]
[ v1p1 v2p2 v3p1 ]
[ v1p1 v2p2 v3p2 ]
[ v1p1 v2p2 v3p3 ]
[ v1p1 v2p2 v3p4 ]

我可以用给定N的for循环来做这个,但我不知道如何对任意N的情况进行推广。

我还找到了一种方法来创建这样一个矩阵,其索引对应于排列数,即

[ 1 1 1 ]
[ 1 1 2 ]
[ 1 1 3 ]
[ 1 1 4 ]
[ 1 2 1 ]
[ 1 2 2 ]
[ 1 2 3 ]
[ 1 2 4 ]

但我不知道如何使用这些索引来构建我想要的矢量。

0 个答案:

没有答案