我有一个向量[x1,x2,... xn]。有没有办法找到包含最后一个元素xn的所有元素组合?例如,如果我有4个元素,我想要组合:
X1,X4
X2,X4
X3,X4
X1,X2,X3,X4
X1,X2,X4
X1,X3,X4
X2,X3,X4
实际上,虽然我的元素数量可达数百个。
感谢您的时间!
答案 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种组合!