Как я могу отсортировать 2-D массив в MATLAB относительно 2-й строки? - PullRequest
3 голосов
/ 14 августа 2010

У меня есть массив сказать "а"

a =

 1     4     5
 6     7     2

если я использую функцию б = сорт (а)

дает ответ

b =

 1     4     2
 6     7     5

но я хочу ответить как

b =

 5     1     4
 2     6     7

означает, что вторая строка должна быть отсортирована, но элементы строки ist должны оставаться неизменными и должны соответствовать строке 2.

Ответы [ 3 ]

3 голосов
/ 18 августа 2010

sortrows (a ', 2)'

Разбирая это:

a =  1     4     5
     6     7     2

a' = 1 6
     4 7
     5 2

sortrows(a',2) = 5 2
                 1 6
                 4 7

sortrows(a',2)' = 5 1 4
                  2 6 7

Ключ здесь сортирует сортировки по указанной строке, все остальные следуют ее порядку.

0 голосов
/ 18 августа 2010

Как насчет

a = [1 4 5; 6 7 2]
a =
     1     4     5
     6     7     2
>> [s,idx] = sort(a(2,:))
s =
     2     6     7
idx =
     3     1     2
>> b = a(:,idx)
b =
     5     1     4
     2     6     7

другими словами, вы используете второй аргумент sort, чтобы получить нужный порядок сортировки, а затем применяете его ко всему.

0 голосов
/ 18 августа 2010

Вы можете использовать функцию SORT только для второй строки, а затем использовать индексный вывод для сортировки всего массива:

[junk,sortIndex] = sort(a(2,:));
b = a(:,sortIndex);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...