我有n套,每套都有n1,n2,n3 ...... nN个不同的成员。 如何从它们生成n1 * n2 * n3 ... * nN个可能的组合
e.g
[6] [4 5] [1 2 3 4]
will give
6 4 1
6 4 2
6 4 3
6 4 4
6 5 1
6 5 2
6 5 3
6 5 4
我想在matlab中执行此操作,但正常的算法也可以正常
答案 0 :(得分:2)
一个简单的解决方案是模拟总和!
从索引列表0 0 0开始,对应于值的索引。这会导致您的示例中的值为6 4 1。 然后加1。 你现在有索引001,所以642 等等。
<00>在004,你溢出,所以你的指数变成010,有6 5 1继续这样做,并保持对访问的可能性的反击。有1 * 2 * 4种可能性,因此很容易知道你何时完成。
答案 1 :(得分:1)
我认为你正在寻找笛卡尔的集合产品:
这应该有所帮助:
cartprod(N1,N2,N3, ...)
http://www.mathworks.com/matlabcentral/fileexchange/5475-cartprod-cartesian-product-of-multiple-sets
还有一个here
set = {n1, n2, n3, ...}
allcomb(set{:})