matlabでこれを行うにはどうすればよいですか?n個の要素のセットがあります
このセットから、異なるペアの要素が区別されるように、n/2ペアの新しいセットを作成します。matlabのn個の要素からそのようなn/2ペアの個別のセットを生成するにはどうすればよいですか?
例:入力セット-{1,2,3,4}
可能な出力セット-
{{1,2}、{3,4}}
{{1,3}、{2,4}}
{{1,4}、{2,3}}
matlabでこれを行うにはどうすればよいですか?n個の要素のセットがあります
このセットから、異なるペアの要素が区別されるように、n/2ペアの新しいセットを作成します。matlabのn個の要素からそのようなn/2ペアの個別のセットを生成するにはどうすればよいですか?
例:入力セット-{1,2,3,4}
可能な出力セット-
{{1,2}、{3,4}}
{{1,3}、{2,4}}
{{1,4}、{2,3}}
「各半分のベクトルの個別の要素」要件に対する明確な解決策を見つけることができませんでした。したがって、各結果を個別に確認することをお勧めします。もっと良い解決策があると思います。これはただその仕事をします。
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