2

matlab を使用して、k のセット内の N 個の数値のすべての可能な組み合わせを含むテーブルを作成したいと考えています。順序が重要です。

私は試しCombinations = combntns(set,subset)てみましたがCombinations = perms(v)Combinations = combnk(v,k)その順序は重要ではありません。

例:

nchoosek(1:5,3)

ans =

 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

含まれている必要がありますが、

 1     3     2
 1     4     2
 1     5     2
 1     3     5
 1     5     3
...

可能な組み合わせの数は、関数によって次のように与えられます。

ん!/(んっ)!

ソース: Mathisfun.com

matlab関数を使用してこれを行う方法はありますか?

4

1 に答える 1

4

このメモリ効率の高いソリューションを試してください。

n = 5; k = 3;
nk = nchoosek(1:n,k);
p=zeros(0,k);
for i=1:size(nk,1),
    pi = perms(nk(i,:));
    p = unique([p; pi],'rows');
end

p あなたが説明しているものを含める必要があります。少なくともsize(p,1) == factorial(n)/factorial(n-k)、または60この例では。

于 2013-10-18T02:31:01.850 に答える