0 前期教程
1 前言
使用MATLAB进行数据分析时,首要的一般是读取文件,除了掌握常用的读写文件函数外(↑前期教程1),如果存在多个文件的情况,就会用到
文件路径操作
相关的函数。
2 遍历文件夹中的所有文件
当需要读取的数据文件都在一个文件夹中时,如何遍历文件夹下的所有文件,实现依次读取?最简单的方式是采用
dir
函数。其语法如下所示。
dir %列出当前文件夹中的文件和文件夹
dir dirname %列出dirname对应的路径下的文件和文件夹
需要注意的是,
dir
函数返回的数据形式为结构体数组(
struct
),且还包含当前文件夹和上一级文件夹,即
"."
和
".."
。
>> A = dir
A =
包含以下字段的 21×1 struct 数组:
name
folder
date
bytes
isdir
datenum
%% 如果要索引其中的某个文件,需要先索引,再取项
>> A(2).name %对应前面提到的上一级文件夹
ans =
'..'
此外,需要注意的是,这里输入的文件夹路径参数(
dirname
)是
支持通配符
的(
主要是 * 和 ? 两个符号
),比如需要提取固定后缀的文件,可以传入
"xxxxx\*.txt"
这样的字符串,实现只读取txt后缀的文件。
3 文件路径合并
在读取多个数据文件时,会需要得到数据文件的绝对路径,而输入的往往是数据文件所在文件夹的路径,因此就需要用到文件路径合并的方法。
3.1 字符串合并
在MATLAB中,文件路径本质上是字符串,其数据类型为
char
,而在MATLAB中可以用
+
来连接字符串,因此可以
文件夹路径 + '\' + 文件名
来得到文件的绝对路径。
3.2 fullfile
当需要合并的内容较多时,需要的加号也就越多,同时还要输入分隔符
\
,比较麻烦,而使用
fullfile
函数就不需要考虑输入分隔符,同时还不需要考虑系统平台带来的分隔符不同的问题,更加简便。其语法如下所示。
f = fullfile(filepart1,...,filepartN)
4 路径拆分——fileparts
当已知某个文件的绝对路径时,想要获取该文件所在文件夹,就需要使用到路径拆分,同样,文件路径本质上就是字符串,因此可以用
sscanf
或者正则表达式等对字符串进行分隔,但是在MATLAB中提供了一个文件路径拆分的函数,即
fileparts
,其语法如下所示。
[filepath,name,ext] = fileparts(filename)
%文件夹路径 文件名(不含后缀) 文件后缀