Matlab如何提取指定文件夹中CSV文件的文件名并转为字符串数组?
解决Matlab从dir结构体数组提取文件名的问题
嘿,我来帮你搞定这个Matlab里的小问题!你用dir函数拿到的确实是结构体数组,不过提取文件名到字符串数组其实很简单,我一步步给你讲:
第一步:获取文件列表并过滤掉目录
dir('MyFolder')返回的结构体数组里,每个元素都包含name(文件名)、isdir(是否是目录)这些字段。前两个元素默认是.(当前目录)和..(上级目录),所以我们可以直接过滤掉所有目录项,这样比硬取第3行之后更稳妥:
% 获取目标文件夹的所有项目 file_list = dir('MyFolder'); % 过滤掉所有目录(包括.和..),只保留文件 file_list = file_list(~[file_list.isdir]);
第二步:提取文件名到字符串数组
现在file_list里都是文件的结构体了,我们只需要把每个结构体的name字段提取出来,转换成字符串数组就行。Matlab R2016b及以后支持原生字符串数组,用下面的代码:
% 先把name字段转成元胞数组,再转成字符串数组 file_names = string({file_list.name});
如果你的Matlab版本比较老,不支持字符串数组,直接用元胞数组也能满足需求:
file_names = {file_list.name};
更高效的小技巧:直接筛选.csv文件
既然你要处理的是.csv文件,其实可以在dir里直接指定文件类型,这样就不用额外过滤了,一步到位:
% 只获取MyFolder里的所有.csv文件 file_list = dir('MyFolder/*.csv'); % 提取文件名到字符串数组 file_names = string({file_list.name});
这样file_names就是你需要的、包含所有目标.csv文件名的字符串数组,直接用来后续读取和绘制数据就好啦!
内容的提问来源于stack exchange,提问作者Julio
相关产品推荐
相关产品推荐

