質問: dir(filenamesubstring); % retruns struct sortrows()は行列用であり、並べ替え列が数値であることに依存しているようです。車輪の再発明やmatlabのストック機能の使用を回避しようとしています。ワンライナーが不可能な場合は、簡潔な解決策をお勧めします。更新 mathworksブログ の最初のコメントごとに2ライナー:%% sort the struct by file save date [tmp ind]=sort({filenames.date}); filenames=filenames(ind);
回答: ソリューションを機能させることが最初のステップです。投稿の解決策は、すべての日付が同じ月と年のものである場合にのみ機能します。例:これらの日付がある場合:'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); ワンライナーは過大評価されています。それをワンライナーにするためのアプローチは、上記のエレガントなアプローチよりも悪い可能性が非常に高いです。 1行で記述したい場合は、次のように1行で記述します。[~, ind] = sort(datetime({filenames.date})); filenames = filenames(ind); または、それを実行する関数を作成し、その関数を呼び出します。function filenames = sortbydate(filenames) [~, ind] = sort(datetime({filenames.date})); filenames = filenames(ind); end そして、この関数を次のように呼び出します。filenames = sortbydate(filenames);