加载路径下指定文件
想用matlab加载路径下所有指定文件,比如加载一个路径下的所有png图像、txt文件等,网上查了一圈也不是很好用,解决了问题就分享一下。
dir函数
用到了dir函数,Matlab中的dir函数是可以列出指定文件夹中的所有文件和子文件夹`,白话说就是检索指定文件,把文件名、文件路径等信息存储在结构体内。
举个例子,我想检索path路径下所有png文件,代码如下:
listfile=dir(fullfile(path,'**\*.png'));
其中,fullfile 作用是文字拼接,
**\*
,两星是包含所有子文件夹,\星表示任意文件名。
还可以这么玩,检索刘诗诗
为前缀的图像,示例如下:
listfile=dir(fullfile(path,'**\刘诗诗*.png'));
结构体属性
listfile返回的是一个结构体,实用的属性就是name(文件名)和folder(文件路径),结构体属性示例如下:
listfile=dir(fullfile(path,'**\*.png'));
Folfer_File = {listfile.folder};%提取文件路径放进cell里
Name_File = {listfile.name};%提取文件名放进cell里
Num_File = numel({listfile.name});%统计文件个数
listfile.folder
表示的就是listfile结构体的文件路径
{listfile.folder}
表示将提取文件路径放进cell里方便后面调用
图像加载
提取到的img就是路径下的用imread函数加载的第一张图像,其他的txt文件、excel文件、raw等用别的方式加载
listfile=dir(fullfile(path,'**\*.png'));
Folfer_File = {listfile.folder};%提取文件路径放进cell里
Name_File = {listfile.name};%提取文件名放进cell里
Num_File = numel({listfile.name});%统计文件个数
img = imread(fullfile(Folfer_File{1},Name_File{1}))
循环加载
文件也可以用循环加载,循环次数就是文件个数Num_File
listfile=dir(fullfile(path,'**\*.png'));
Folfer_File = {listfile.folder};%提取文件路径放进cell里
Name_File = {listfile.name};%提取文件名放进cell里
Num_File = numel({listfile.name});%统计文件个数
for j=1:Num_File
img(:,:,j) = imread(fullfile(Folfer_File{j},Name_File{j}))
end