Я пытаюсь сгенерировать все комбинации из 2 элементов в заданном диапазоне чисел. Я использую функцию «combnk» следующим образом.Странное поведение функции combnk MATLAB
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 показывает это странное поведение?
Единственное решение, о котором я могу думать, - это сначала проверить 1-ю запись матрицы результатов и перевернуть ее вниз, используя функцию «flipud».
Обновление: немного экспериментируя, я заметил, что обратный порядок возникает только тогда, когда длина набора чисел меньше 6. Вот почему combnk (1: 6,2) производит «правильный» порядок , Где в виде гребня (1: 5,2) результаты возвращаются назад. Это все еще большая проблема.
Это похоже на ошибку. Вы должны хотя бы сообщить об этом в MathWorks, чтобы узнать, согласятся ли они. –