2010-05-27 2 views
4

У меня есть матрица размером 2 на 3, и я хочу отсортировать ее по первому столбцу. Вот пример:Как сохранить строки при сортировке матрицы в MATLAB?

data will change to --> new data 
11 33      10 22 
22 44      11 33 
10 22      22 44 

У меня есть этот код для сортировки матрицы A, но она не работает хорошо:

sort(A,1,'ascend'); 
+1

Хотя это не проявляется на связанной боковой панели, я нашел * очень * старый дубликат: http://stackoverflow.com/questions/134712/sorting-2-d-array- in-matlab-wrt-one-column. Я попытаюсь повторить эти два, чтобы они чаще появлялись в поисках. – gnovice

ответ

7

SORTROWS функция может справиться с этим для вас:

B = sortrows(A); 
+0

Спасибо, что работает! :) – Jessy

+0

Как сохранить отсортированные данные обратно в один и тот же файл txt? – Jessy

+0

@Jessy: Чтобы записать отсортированные данные обратно в файл, вы можете использовать FPRINTF (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fprintf.html). Вот пример: 'fid = fopen ('newdata1.txt', 'w'); fprintf (fid, '% f% f \ n', B. '); fclose (fid); ' – gnovice

3

Как @gnovice предлагает, sortrows - лучшее решение здесь. Вы также можете указать несколько выходов для команд sort и sortrows, которые возвратят индекс сортировки. Вы можете использовать это, чтобы изменить свои другие столбцы или просто отслеживать перестановку. Например:

A=rand(10,2); 
[B, idx]=sortrows(A); 
Смежные вопросы