找到包含matlab中最后一个元素的所有可能元素组合

时间:2014-08-01 12:26:30

标签: matlab vector combinations elements

我有一个向量[x1,x2,... xn]。有没有办法找到包含最后一个元素xn的所有元素组合?例如,如果我有4个元素,我想要组合:

X1,X4

X2,X4

X3,X4

X1,X2,X3,X4

X1,X2,X4

X1,X3,X4

X2,X3,X4

实际上,虽然我的元素数量可达数百个。

感谢您的时间!

1 个答案:

答案 0 :(得分:2)

你真的只需要选择所有元素,除了最后一个元素。

C = cell(length(x)-1,1);
for n = 1:length(x)-1
    C{n} = nchoosek(x(1:end-1),n);
end

C的每个元素都包含所有带n个元素的可能向量。您所需要做的就是在每个人身上x(end)获取您正在寻找的东西。例如,如果combo=C{4}(7,:)是一个没有x的最后一个元素的求解集,那么您所需的输出为combo=[combo x(end)]。要为所有解决方案执行此操作,只需在上面的循环中添加以下代码:

C{n} = [C{n} x(end)*ones(size(C{n},1),1)];

警告:使用数千个元素,您将很快耗尽内存。只需100个元素即可为您提供超过6e29种组合!