我想创建一个表,其中包含所有可能的组合,顺序很重要,使用matlab在k个集合中包含N个数字。
我试着Combinations = combntns(set,subset)
和Combinations = perms(v)
和Combinations = combnk(v,k)
,但在那些顺序并不重要。
一个例子:
nchoosek(1:5,3)
年=
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
虽然还应该包括
1 3 2
1 4 2
1 5 2
1 3 5
1 5 3
...
可能的组合数由以下函数给出:
N!/(Nk)!
有没有可能使用Matlab函数来做到这一点?
尝试使用这种内存有效的解决方案:
n = 5; k = 3;
nk = nchoosek(1:n,k);
p=zeros(0,k);
for i=1:size(nk,1),
pi = perms(nk(i,:));
p = unique([p; pi],'rows');
end
p
应该包含您所描述的内容。至少size(p,1) == factorial(n)/factorial(n-k)
或60
对于此示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句