0

のすべての可能な組み合わせを生成する必要があり10X5 matrixます。私が必要とするのは、すべて、10X1 matrixなどです。最も効率的な方法は何ですか。複数のループを使用できますが、それは非効率的です。例: 私は行列を持っています:10X2 matrix10X3 matrix

col1 col2 col3 col4

私が欲しい:

col1 and col2 and col3 and col4

それから:

col1 col2 and col1 col3 and col1 col4

など、列の 2^5-1 の組み合わせをすべて返します。

4

2 に答える 2

3

nchoosekループで使用できます:

for k = 1:ceil(5/2) %only need to go half way up otherwise start repeating
  index{k} = nchoosek(1:5, k);
end

次に、インデックスを使用して、列を選択してサブマトリックスを取得します

于 2013-04-15T16:00:02.593 に答える
2

私はあなたのためにそれを解決するつもりはありませんが、ここにいくつかの便利な機能があります. 入力が正確に何であるかを明確にする必要があります。

>> nchoosek([1:4],3)

ans =

     1     2     3
     1     2     4
     1     3     4
     2     3     4

>> combntns([1:3],2)

ans =

     1     2
     1     3
     2     3

>> perms([1:3])

ans =

     3     2     1
     3     1     2
     2     3     1
     2     1     3
     1     2     3
     1     3     2
于 2013-04-15T16:08:02.643 に答える