Fazer um trabalho de solução é o primeiro passo. A solução na sua postagem funciona somente se todas as datas forem do mesmo mês e ano.
Exemplo:
Se você tiver essas datas:
'18-May-2017 01:01:36'
'18-Jun-2018 22:58:50'
'19-Jun-2018 01:52:32'
seu código organiza-os como:
'18-Jun-2018 22:58:50'
'18-May-2017 01:01:36'
'19-Jun-2018 01:52:32'
que está claramente errado.
Seu código pode ser corrigido usando datetime
(introduzido no R2014b) da seguinte maneira:
[~, ind] = sort(datetime({filenames.date}));
filenames = filenames(ind);
Os one-liners são superestimados. Qualquer abordagem para torná-lo uma linha é muito provavelmente pior do que a abordagem elegante acima. Se você quiser apenas escrevê-lo em uma linha, escreva-o em uma linha como:
[~, ind] = sort(datetime({filenames.date})); filenames = filenames(ind);
ou crie uma função que faça isso e chame essa função, por exemplo
function filenames = sortbydate(filenames)
[~, ind] = sort(datetime({filenames.date}));
filenames = filenames(ind);
end
e chame esta função com:
filenames = sortbydate(filenames);