与えられた数の範囲で2つの要素のすべての組み合わせを生成しようとしています。私は次のように「combnk」関数を使用しています。
combnk(1:4,2)
ans =
3 4
2 4
2 3
1 4
1 3
1 2
combnk(1:6,2)
ans =
1 2
1 3
1 4
1 5
1 6
2 3
2 4
2 5
2 6
3 4
3 5
3 6
4 5
4 6
5 6
返される組み合わせの順序が変わっているようです。プログラムが正しく機能するためには、事前に順序を知っておく必要があります。
一貫した順序で組み合わせを取得するための解決策はありますか?また、MATLABがこの奇妙な動作を示すのはなぜですか?
これまでに考えられる唯一の解決策は、最初に結果行列の最初のエントリを確認し、「flipud」関数を使用してそれを上下逆にすることです。
更新:少し実験してみると、数字のセットの長さが6未満の場合にのみ逆の順序が発生することに気付きました。これが、combnk(1:6,2)が「正しい」順序を生成する理由です。一方、combnk(1:5,2)は、結果を逆方向に生成します。これはまだ大きな問題です。