2

matlabでこれを行うにはどうすればよいですか?n個の要素のセットがあります

このセットから、異なるペアの要素が区別されるように、n/2ペアの新しいセットを作成します。matlabのn個の要素からそのようなn/2ペアの個別のセットを生成するにはどうすればよいですか?

例:入力セット-{1,2,3,4}

可能な出力セット-

{{1,2}、{3,4}}

{{1,3}、{2,4}}

{{1,4}、{2,3}}

4

1 に答える 1

0

「各半分のベクトルの個別の要素」要件に対する明確な解決策を見つけることができませんでした。したがって、各結果を個別に確認することをお勧めします。もっと良い解決策があると思います。これはただその仕事をします。

x = [1 2 3 3];
xsize = size(x,2);

p = perms(x);
up = unique(p,'rows');

result = [];

for entry=up'
  left = entry(1:xsize/2);
  right = entry(xsize/2+1:xsize);
  if numel(unique(left)) == xsize/2 && numel(unique(right)) == xsize/2
    result = vertcat(result,entry')
  end
end

完全を期すために、結果は次のとおりです。

1   3   2   3
1   3   3   2
2   3   1   3
2   3   3   1
3   1   2   3
3   1   3   2
3   2   1   3
3   2   3   1

半分のベクトルを実際に分割する必要があるかどうかはわかりませんでした。その場合は、お好みleftで とを入れてください。right

于 2012-06-11T08:05:37.633 に答える