Создание решения - это первый шаг. Решение в вашем посте работает, только если все даты относятся к одному и тому же месяцу и году.
Пример:
Если у вас есть эти даты:
'18-May-2017 01:01:36'
'18-Jun-2018 22:58:50'
'19-Jun-2018 01:52:32'
ваш код упорядочивает их как:
'18-Jun-2018 22:58:50'
'18-May-2017 01:01:36'
'19-Jun-2018 01:52:32'
что явно неправильно.
Ваш код может быть исправлен с использованием datetime
(представлен в R2014b) следующим образом:
[~, ind] = sort(datetime({filenames.date}));
filenames = filenames(ind);
Однострочники переоценены. Любой подход, чтобы сделать его однострочным, скорее всего, будет хуже, чем вышеупомянутый элегантный подход. Если вы просто хотите написать это в одной строке, то напишите в одной строке как:
[~, ind] = sort(datetime({filenames.date})); filenames = filenames(ind);
или создать функцию, которая делает это, и вызвать эту функцию, т.е.
function filenames = sortbydate(filenames)
[~, ind] = sort(datetime({filenames.date}));
filenames = filenames(ind);
end
и вызвать эту функцию с помощью:
filenames = sortbydate(filenames);