给出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 ]
但我不知道如何使用这些索引来构建我想要的矢量。