好的,假设我有以下文件夹结构
folder
A
q1
aaaa.jpg
bbbb.jpg
cccc.jpg
desktop.ini (*hidden file*)
q2
eeee.jpg
ffff.jpg
gggg.jpg
B
q1
hhhh.jpg
iiii.jpg
desktop.ini (*hidden file*)
我想创建4个数组。
Names = [A , B]
A_q1 = [aaaa , bbbb , cccc]
A_q2 = [eeee , ffff , gggg]
B_q1 = [hhhh , iiii]
我尝试使用目录,如下所示
allFiles = dir( 'c:myfolder' );
allNames = { allFiles.name };
创建Names数组,我得到了"."、".."以及其他文件。
[如何排除它们?此外,如何仅在names和NOT中获取文件夹名称?]
没必要,我后来在节目中设法解决了这个问题。
那么我该如何创建其他数组呢?文件夹深度始终相同,.jpg文件存储在q1、q2、q3等文件夹中。
提前感谢
首先制作一些包含主路径和子路径的变量以便于使用,然后使用ls
命令读取所需扩展名的文件。使用"[]"连接路径。Ex-
main_path = 'D:folder';
sub_path11 = 'A';
sub_path12 = 'B';
sub_path21 = 'q1';
sub_path21 = 'q2';
ext = '*.jpg';
img_names1 = ls([main_path sub_path11 sub_path21 ext]);
img_names2 = ls([main_path sub_path11 sub_path22 ext]);
img_names3 = ls([main_path sub_path12 sub_path21 ext]);
您可以使用-读取具有可变长度名称的图像文件
path1 = [main_path sub_path11 sub_path21];
for i = 1:size(img_names1,1)
file_name = fscanf(img_names1(i,:),'%s'); % for removing the extra spaces at the end of filename
img = imread([path1 '/' file_name]);
...
...
end
您也可以使用相对路径(即相对于文件的当前位置),使用"../"one_answers"/"运算符。
以及关于"。"one_answers"..",你可以使用以下代码来消除它
img_data = dir([main_path sub_path11 sub_path21]);
FileNames = {img_data.name};
FileNames(ismember(FileNames,{'.','..'})) = [];