【发布时间】:2015-01-22 12:39:48
【问题描述】:
如何为某个数字生成可能的不同组合 示例:
m=2 给出:
[1 1;1 2;2 1;2 2]
m=3 给出:
[1 1;1 2;1 3;2 1;2 2;2 3;3 1;3 2;3 3]
等等……
使用perms([1 2]) 仅生成[1 2;2 1]
【问题讨论】:
-
这些实际上是 not combinations 在数学意义上,因为
[1,2]和[2,1]将是相同的。它们也不是排列,这就是perms不起作用的原因。这些实际上只是笛卡尔积的元组。这听起来可能过于精确,但如果您寻找解决此问题的方法,那么正确的名称会让您走得更远。 -
您可以使用this answer 和输入
vectors = { 1:m, 1:m }来生成所有元组(“组合”) -
或等效地:这个答案this answer 输入
vectors = {1:m 1:m};combs = fliplr(combvec(vectors{end:-1:1}).')做同样的事情。 ;-) -
@Amira 如果答案帮助您解决了问题,请将其标记为已接受。谢谢!
标签: matlab combinations