Matlab根据文件路径从文件夹和文件名创建数组



好的,假设我有以下文件夹结构

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数组,我得到了"."、".."以及其他文件。

[如何排除它们?此外,如何仅在namesNOT中获取文件夹名称?]

没必要,我后来在节目中设法解决了这个问题。

那么我该如何创建其他数组呢?文件夹深度始终相同,.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,{'.','..'})) = [];

最新更新