1

我想使用 matlab 创建一个矩阵,其中包含数据集 V= 0:46 中所有可能的大小为 8 的组合。使用 nchoosek 似乎无法做到这一点。有人可以帮我解决问题吗?谢谢

4

1 回答 1

2

如果您愿意创建一个由 314457495×8 个元素组成的矩阵,您可以创建自己的函数。递归解决方案是

function R = nck(v, k)
if k==1,
    R = v(:);
elseif k==numel(v),
    R = v(:)';
else
    R0 = nck(v(1:end-1),k);
    R1 = nck(v(1:end-1),k-1);
    R = [R0; R1, v(end)*ones(size(R1,1),1)];
end
R = sortrows(R);
end
于 2013-07-12T22:29:29.817 回答