Организация datevec в Matlab

#matlab

#matlab

Вопрос:

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

Например, у меня есть массив datevec для июня:

 1900    6    1    0    0    0
1900    6    2    0    0    0 
1900    6    3    0    0    0
... 
2013    6   30    0    0    0
  

который содержит каждый день в июне с 1900-2013. Есть ли способ упорядочить массив datevec по годам, сохраняя при этом правильные даты? Мой конечный результат будет выглядеть следующим образом:

 1900   6     1    0    0    0
1901   6     1    0    0    0
1902   6     1    0    0    0 
...
2013   6     30   0    0    0
  

Я пытался использовать

 june(sort(june(:,3)),:)
  

который возвращает даты в правильном организованном виде, однако столбцы year неверны.

Заранее спасибо всем!

Ответ №1:

Я все еще работаю над тем, как сделать это без цикла, но это (я думаю) отвечает на вопрос:

 [~,idx] = sort(june(:,3));
sorted_table = zeros(size(june));

for ii = 1:length(idx)
    sorted_table(ii,:) = june(idx(ii),:);
end
  

РЕДАКТИРОВАТЬ: только что обнаружил встроенный sortrows :

 sorted_table = sortrows(june,[3 1])
  

Сортирует по столбцу 3, а затем по столбцу 1

Комментарии:

1. Я постоянно удивляюсь, как я могу замалчивать эти функции. Спасибо!