在 MATLAB 中按顺序读取所有文件
Reading all the files in sequence in MATLAB
我正在尝试使用此代码读取 MATLAB 文件夹中的所有图像
flst=dir(str_Expfold);
但它向我显示了这样的输出。这不是我想要的顺序。
谁能告诉我如何按顺序阅读所有这些内容?
给差分,也请说明原因
从 Matlab 论坛上看,dir 命令输出排序没有指定,但它似乎是纯粹的字母顺序(纯粹是我的意思是它不首先考虑排序器文件名)。因此,您必须手动对名称进行排序。以下代码摘自this link(你可能想更改文件扩展名):
list = dir(fullfile(cd, '*.mat'));
name = {list.name};
str = sprintf('%s#', name{:});
num = sscanf(str, 'r_%d.mat#');
[dummy, index] = sort(num);
name = name(index);
按字母顺序 depth10
在 depth2
之前。如果可能的话,在创建 string + num
类型的文件名时,使用固定宽度的数字部分(例如 depth01
、depth02
)——这样可以避免排序问题。
如果您受困于已有的文件名,并且知道文件名模式,那么您根本不用费心使用 dir
,而是首先以正确的顺序创建您的文件名列表:
for n = 1:50
fname = sprintf('depth%d.png',n);
% code to read and process images goes here
end
我正在尝试使用此代码读取 MATLAB 文件夹中的所有图像
flst=dir(str_Expfold);
但它向我显示了这样的输出。这不是我想要的顺序。
谁能告诉我如何按顺序阅读所有这些内容?
给差分,也请说明原因
从 Matlab 论坛上看,dir 命令输出排序没有指定,但它似乎是纯粹的字母顺序(纯粹是我的意思是它不首先考虑排序器文件名)。因此,您必须手动对名称进行排序。以下代码摘自this link(你可能想更改文件扩展名):
list = dir(fullfile(cd, '*.mat'));
name = {list.name};
str = sprintf('%s#', name{:});
num = sscanf(str, 'r_%d.mat#');
[dummy, index] = sort(num);
name = name(index);
按字母顺序 depth10
在 depth2
之前。如果可能的话,在创建 string + num
类型的文件名时,使用固定宽度的数字部分(例如 depth01
、depth02
)——这样可以避免排序问题。
如果您受困于已有的文件名,并且知道文件名模式,那么您根本不用费心使用 dir
,而是首先以正确的顺序创建您的文件名列表:
for n = 1:50
fname = sprintf('depth%d.png',n);
% code to read and process images goes here
end