сортировать и сортировать в Matlab - PullRequest
2 голосов
/ 14 июня 2011

Можно ли достичь той же функциональности с помощью функции сортировки, что и с помощью sortrows. В моей матрице более 4 миллионов + строк, а sortrows приносит большую задержку из-за итераций. (векторизованный подход приветствуется)

%Col1 -> date, Col2 -> id, Col3 -> ranking within each date-group (to help you debug)
data = [ ...
       734614 5 3; 734615 6 5; 734622 1 1; 734615 1 1; 734615 4 3; 
       734622 2 2; 734622 4 3;   734615 3 2; 734615 5 4; 734614 3 2; 
       734614 1 1; 734622 8 4; 734622 9 5;] ;

sortedanswer = 
  734614           1           1
  734614           3           2
  734614           5           3
  734615           1           1
  734615           3           2
  734615           4           3
  734615           5           4
  734615           6           5
  734622           1           1
  734622           2           2
  734622           4           3
  734622           8           4
  734622           9           5

Спасибо! * * 1004

1 Ответ

1 голос
/ 15 июня 2011

Вы можете сделать это как

[~,indx]=sort(data(:,1));
sortedanswer=data(indx,:)

sortedanswer =

      734614           5           3
      734614           3           2
      734614           1           1
      734615           6           5
      734615           1           1
      734615           4           3
      734615           3           2
      734615           5           4
      734622           1           1
      734622           2           2
      734622           4           3
      734622           8           4
      734622           9           5

Обратите внимание, что он отсортирован по строкам в первом столбце. Порядок строк такой же, как и в оригинальном data, поэтому вы видите 5 3 во втором и третьем столбцах первого ряда в моем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...