MATLAB: 读取同一目录下的所有文件名并按时间排序

时间:2022-07-11 14:33:20

用MATLAB测试图像处理算法的过程中,通常需要读入一个目录下的多张测试图片,可以根据文件命名规则来读入某个特定目录下的所有文件,但是相对比较麻烦。通过利用MATLAB自带的dir(),可以先读入所有的文件名字,知道文件数量,而且不用知道文件的命名规律,不仅实现起来更加简单而且可扩展性更强。

function [dirOutput] = getAllFilenames(filePattern)
% Function: Get all file information (filenames) of the same directory, and sort by date.
dirOutput = dir(filePattern);
[~, ind] = sort([dirOutput(:).datenum], 'ascend');
dirOutput = dirOutput(ind);
end

该程序首先将imgDir目录下面的所有文件信息以结构体的形式读入,然后根据文件的生成时间信息(datanum)从早到迟排序。

getAllFilenames()测试程序:

fileDir = 'E:\GraduationProject\Experiment\src_img\bridge2\';
filePattern = [imgDir, '*.png'];
% Adapt difference file system of multi-platforms
% imgPattern = fullfile(imgDir, '*.png');
[dirOutput] = getAllFilenames(filePattern);
for k = 1 : length(dirOutput)
dirOutput(k).name
end

注意:
在运行过程中,发现一些目录下部分文件的生成时间的信息彼此之间相差太小,导致排序可能出错。因此,在排序完之后最好查看一下文件名字的顺序是否正确。