在matlab中打印n个选择k个组合

在matlab中打印n个选择k个组合,matlab,combinations,Matlab,Combinations,我需要在matlab中创建一个函数,它返回k集合中n个子集的任意组合。例如,我有一个集合{1,2,3,4,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] 我试着自己写,但没有成功,我放弃了。它部分地起作用,但它创造了无尽的循环 for i=1:n if(firstTime) lastComb

我需要在matlab中创建一个函数,它返回k集合中n个子集的任意组合。例如,我有一个集合{1,2,3,4,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]

我试着自己写,但没有成功,我放弃了。它部分地起作用,但它创造了无尽的循环

for i=1:n
    if(firstTime)
        lastComb=min //123
        firstTime=false
    else
        for d=k:-1:1
            while(lastComb(:,end) < n-k+d && lastComb(:,end)<=n)
                newComb=lastComb
                newComb(d)=lastComb(d)+1
                combos= [combos; newComb]
                lastComb=newComb
            end
            while(lastComb(:,end) > n-k+d && lastComb(:,end)<=n)
                newComb=lastComb
                for p=d:-1:1

                    if(newComb(p)+1 <=n)
                        newComb(p)=newComb(p)+1
                        combos= [combos; newComb]
                    end
                end
            end
        end
    end
end
对于i=1:n
如果(第一次)
lastComb=min//123
第一次=错误
其他的
对于d=k:-1:1

虽然(lastComb(:,end) 我看到的几个主要问题如下:

(1) 你写的东西似乎只得到了“n”个组合,我认为是3个组合。相反,你应该得到10个组合。这个函数的开头应该有一个组合计算[nCk=n!/((n-k)!*k!)]

(2) 您将第一个组合定义为1、2、3,但随后不将其放入您正在制作的“组合”集合中。相反,在它到达“组合”之前,您将其替换为其他组合

还有一些,但是试着修复这些部件,其他部件可能会自然而然地出现


总的来说,此函数已经存在。只要在MATLAB中键入“open nchoosek”,就可以看到您在遇到问题时正在尝试的优化版本!

总的来说,您的语法有点混乱(如其他人之前所述)。如果您在此处发布问题,最好包含所有代码,包括定义的变量,以便帮助您

我看到的几个主要问题如下:

(1) 你写的东西似乎只得到了“n”个组合,我认为是3个组合。相反,你应该得到10个组合。这个函数的开头应该有一个组合计算[nCk=n!/((n-k)!*k!)]

(2) 您将第一个组合定义为1、2、3,但随后不将其放入您正在制作的“组合”集合中。相反,在它到达“组合”之前,您将其替换为其他组合

还有一些,但是试着修复这些部件,其他部件可能会自然而然地出现


总的来说,此函数已存在。只需键入“open nchoosek”如果遇到问题,请输入MATLAB以查看您正在尝试的优化版本!

/
不是有效的MATLAB语法。您确定按此处的方式运行代码吗?还请包括变量的初始化。您需要复制粘贴完整的代码,我们可以运行。请参阅。如果您所需要的只是一个执行您可以使用的任务的函数,请执行以下操作:您是否尝试了
nchoosek(1:5,3)
/
不是有效的MATLAB语法。您确定按此处的方式运行代码吗?还请包括变量的初始化。您需要复制粘贴我们可以运行的完整代码。请参阅。如果您所需要的只是一个执行您可以使用的任务的函数:是否尝试了
nchoosek(1:5,3)