matlab数据的导入导出-总结篇
支持的导入和导出文件格式
下表显示了可以从 MATLAB 应用程序导入和导出的文件格式。
文件内容 | 扩展名 | 说明 | 导入函数 | 导出函数 |
---|---|---|---|---|
MATLAB 格式化数据 | MAT | 保存的 MATLAB 工作区 | ||
访问 MATLAB 工作区中的部分变量 | matfile | matfile | ||
文本 | 任意文本,包括: | 逗号分隔的数字 | ||
分隔数字 | ||||
分隔数字或者文本和数字混合 | 无 | |||
列向分隔数字或者文本和数字混合 | ||||
电子表格 | XLS XLSB(仅限安装了 Windows® 版 Microsoft® Excel® 的系统) XLTM(仅导入) ODS(具有 COM 接口的系统) | 工作表或电子表格范围 | ||
工作表或电子表格范围中的列向数据 | ||||
可扩展标记语言 | XML | XML 格式化文本 |
MATLAB 格式化数据
load
将文件变量加载到工作区中
语法
1 | load(filename) load(filename) 从 filename 加载数据。 |
save
将工作区变量保存到文件中
语法
1 | save(filename) 将当前工作区中的所有变量保存在MATLAB格式的二进制文件(MAT 文件)filename 中。如果 filename 已存在,save 会覆盖该文件。 |
fmt - 文件格式
- ‘-mat’ 二进制的 MAT 文件格式。
- ‘-ascii’ 具有 8 位精度的文本格式。
- ‘-ascii’,’-tabs’ 具有 8 位精度的以制表符分隔的文本格式。
- ‘-ascii’,’-double’ 具有 16 位精度的文本格式。
- ‘-ascii’,’-double’,’-tabs’ 具有 16 位精度的以制表符分隔的文本格式。
示例
创建两个变量,将其保存到 ASCII 文件中,然后查看文件内容。
1 | p = rand(1,10); |
将变量保存到 7.3 版的 MAT 文件中,而不进行压缩
1 | A = rand(5); |
将变量追加到 MAT 文件中
1 | p = rand(1,10); |
matfile
直接访问和更改 MAT 文件中的变量,而不加载到内存中
语法
1 | m = matfile(filename) 创建 MAT 文件对象 m,该对象连接到名为 filename 的 MAT 文件。该对象允许您直接访问和更改 MAT 文件中的变量,而不必将变量加载到内存中。 |
isWritable - 对 MAT 文件的写访问权限
对 MAT 文件的写访问权限,指定为 true 或 false。
- true 允许保存到 MAT 文件。如果文件为只读文件,MATLAB 会使用 fileattrib 函数更改系统权限。
- false 禁止保存到 MAT 文件。MATLAB 不更改系统权限。
对于新文件,默认值为 true;对于现有文件,默认值为 false。
数据类型:logical
文本
任意文本,包括:CSV, TXT
csvread 逗号分隔的数字
读取逗号分隔值 (CSV) 文件
语法
1 | M = csvread(filename) 将逗号分隔值 (CSV) 格式化文件读入数组 M 中。该文件只能包含数值。 |
csvwrite 逗号分隔的数字
写入逗号分隔值文件
语法
1 | csvwrite(filename,M) 将矩阵 M 作为逗号分隔值写入 filename 中。将 filename 指定为字符矢量或字符串,例如 'csvlist.dat' 或 "csvlist.dat"。 |
提示
csvwrite 用换行符但不用回车符终止每行。
csvwrite 最多写入五位有效数字。如果您需要更高精度,请使用带精度参数的 dlmwrite。
csvwrite 不接受输入矩阵 M 的元胞数组。要导出仅包含数值数据的元胞数组,请在调用 csvwrite 之前使用 cell2mat 将元胞数组转换为数值矩阵。要导出包含混合字母和数值数据的元胞数组(其中每个元胞包含一个元素),可使用 xlswrite 创建 Excel® 电子表格(如果您的系统安装了 Excel)。
dlmread 分隔数字
语法
1 | M = dlmread(filename) 将 ASCII 分隔的数值数据文件读取到矩阵 M。dlmread 函数从该文件中检测到分隔符,并将重复的空白视为一个分隔符。 |
dlmwrite 分隔数字
语法
1 | dlmwrite(filename,M) 将数组 M 中的数值数据写入一个 ASCII 格式的文件 filename,并使用默认分隔符 (,) 分隔各数组元素。如果文件 filename 已存在,则 dlmwrite 将覆盖该文件。 |
名称-值对组参数
指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在单引号 (‘ ‘) 中。您可采用任意顺序指定多个名称和值对组参数,如 Name1,Value1,…,NameN,ValueN 所示。
示例:dlmwrite(‘myFile.txt’,M,’precision’,4,’delimiter’,’ ‘) 写入数组 M 中的数值,带四位有效位数并使用空白字符分隔。
‘delimiter’ - 用于分隔数组各元素的分隔符
‘roffset’ - 行偏移量:
行偏移量,指定为包含 ‘roffset’ 和标量、以逗号分隔的对组。行偏移量指示写入数值数据前所跳过的行数。这些行将用指定的分隔符填充。将新数据追加到现有文件时,新数据距现有数据的末尾有一定偏移。
行偏移量从零开始,因此 ‘roffset’,0 指示 MATLAB 从目标文件的第一行开始写入(即默认值)。但是,当追加到文件时,’roffset’,0 指示 MATLAB 从紧随现有数据后的第一行开始写入。
示例:’roffset’,2
‘coffset’ - 列偏移量
距目标文件左侧的列偏移量,指定为用逗号分隔的对组,由 ‘coffset’ 和标量组成。列偏移量指示写入数值数据前所跳过的列数。这些列将用指定的分隔符分隔。
列偏移量从零开始,因此 ‘coffset’,0 指示 MATLAB 从目标文件的第一列开始写入(即默认值)。
示例:’coffset’,1
‘precision’ - 数值精度
向文件写入数据时使用的数值精度,指定为用逗号分隔的对组,由 ‘precision’ 和标量或以 % 开头的 C 样式格式设定符(例如 ‘%10.5f’)组成。如果 precision 的值为标量,则其指示的是有效位数的个数。
示例:’precision’,3
示例:’precision’,’%10.5f’
数据类型:single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char
‘newline’ - 行终止符
行终止符,指定为逗号分隔的对组,由 ‘newline’ 和使用回车符/换行符 (CR/LF) 的 ‘pc’ 或使用换行符 (LF) 的 ‘unix’ 所组成。
示例:’newline’,’pc’
xlsread 工作表或电子表格范围
读取 Microsoft Excel 电子表格文件
语法
1 | num = xlsread(filename) 读取名为 filename 的 Microsoft Excel电子表格工作表中的第一张工作表,并在一个矩阵中返回数值数据。 |
xlswrite 工作表或电子表格范围
写入 Microsoft Excel 电子表格文件
语法
1 | xlswrite(filename,A) 将矩阵 A 写入 Microsoft® Excel® 电子表格工作簿 filename 中的第一张工作表,从单元格 A1 开始写入。 |
示例
将工作表读取到数值矩阵
1 | 创建一个名为 myExample.xlsx 的 Excel 文件。 |
myExample.xlsx 的 Sheet1 包含:
First Second Third
1 2 3
4 5 x
7 8 9
A =
1 2 3
4 5 NaN
7 8 9
请求数值、文本和原始数据
从第一个示例中的 Excel 文件中请求数值数据、文本数据和合并数据。1
[num,txt,raw] = xlsread('myExample.xlsx')
num =
1 2 3
4 5 NaN
7 8 9
txt =
‘First’ ‘Second’ ‘Third’
‘’ ‘’ ‘’
‘’ ‘’ ‘x’
raw =
‘First’ ‘Second’ ‘Third’
[ 1] [ 2] [ 3]
[ 4] [ 5] ‘x’
[ 7] [ 8] [ 9]