matlab保存和载入数据,matlab数据的导入导出-总结篇

支持的导入和导出文件格式

下表显示了可以从 MATLAB 应用程序导入和导出的文件格式。

文件内容扩展名说明导入函数导出函数MATLAB 格式化数据MAT保存的 MATLAB 工作区

访问 MATLAB 工作区中的部分变量

文本任意文本,包括:

CSV

TXT逗号分隔的数字

分隔数字或者文本和数字混合无

电子表格XLS

XLSX

XLSM

XLSB(仅限安装了 Windows® 版 Microsoft® Excel® 的系统)

XLTM(仅导入)

XLTX(仅导入)

ODS(具有 COM 接口的系统)工作表或电子表格范围

可扩展标记语言XMLXML 格式化文本

MATLAB 格式化数据

load

将文件变量加载到工作区中

语法1

2

3

4

5

6

7load(filename) load(filename) 从 filename 加载数据。

load(filename,variables) 加载 MAT 文件 filename 中的指定变量。

load(filename,'-ascii') 将 filename 视为 ASCII 文件,而不管文件扩展名如何。

load(filename,'-mat') 将 filename 视为 MAT 文件,而不管文件扩展名如何。

load(filename,'-mat',variables) 加载 filename 中的指定变量。

S = load(___) 使用前面语法组中的任意输入参数将数据加载到 S 中。

load filename 是命令形式的语法。命令形式需要的特殊字符更少。

save

将工作区变量保存到文件中

语法1

2

3

4

5

6

7

8save(filename) 将当前工作区中的所有变量保存在MATLAB格式的二进制文件(MAT 文件)filename 中。如果 filename 已存在,save 会覆盖该文件。

save(filename,variables) 仅保存 variables 指定的结构体数组的变量或字段。

save(filename,variables,fmt) 以 fmt 指定的文件格式保存。variables 参数为可选参数。如果您不指定 variables,save 函数将所有变量保存在工作区中。

save(filename,variables,version) 保存为 version 指定的 MAT 文件版本。variables 参数为可选参数。

save(filename,variables,version,'-nocompression') 将变量保存到 MAT 文件,而不压缩。'-nocompression' 标志仅支持 7.3 版的 MAT 文件。因此,您必须将 version 指定为 '-v7.3'。variables 参数为可选参数。

save(filename,variables,'-append') 将新变量添加到一个现有文件中。如果 MAT 文件中已经存在变量,则 save 会使用工作区中的值覆盖它。

save(filename,variables,'-append','-nocompression') 将新变量添加到一个现有文件中,而不进行压缩。现有文件必须是 7.3 版的 MAT 文件。

save filename 是命令形式的语法。命令形式需要的特殊字符更少。

fmt - 文件格式‘-mat’ 二进制的 MAT 文件格式。

‘-ascii’ 具有 8 位精度的文本格式。

‘-ascii’,’-tabs’ 具有 8 位精度的以制表符分隔的文本格式。

‘-ascii’,’-double’ 具有 16 位精度的文本格式。

‘-ascii’,’-double’,’-tabs’ 具有 16 位精度的以制表符分隔的文本格式。

示例

创建两个变量,将其保存到 ASCII 文件中,然后查看文件内容。1

2

3

4

5

6p = rand(1,10);

q = ones(10);

save('pqfile.txt','p','q','-ascii')

type('pqfile.txt')

save pqfile.txt p q -ascii

将变量保存到 7.3 版的 MAT 文件中,而不进行压缩1

2

3

4

5

6A = rand(5);

B = magic(10);

save('myFile.mat','A','B','-v7.3','-nocompression')

save myFile.mat A B -v7.3 -nocompression

'-nocompression' 标志有助于更快地保存那些大于 2 GB 或者不会从压缩中受益的变量。

将变量追加到 MAT 文件中1

2

3

4

5

6

7p = rand(1,10);

q = ones(10);

save('test.mat','p','q')

a = 50;

save('test.mat','a','-append')

whos('-file','test.mat')

matfile

直接访问和更改 MAT 文件中的变量,而不加载到内存中

语法1

2

3m = matfile(filename) 创建 MAT 文件对象 m,该对象连接到名为 filename 的 MAT 文件。该对象允许您直接访问和更改 MAT 文件中的变量,而不必将变量加载到内存中。

matfile 函数提供的部分加载和保存所需的内存比 load 和 save 命令少,因为后两者始终处理全部变量。

m = matfile(filename,'Writable',isWritable) 启用或禁用对文件的写访问权限。

isWritable - 对 MAT 文件的写访问权限

对 MAT 文件的写访问权限,指定为 true 或 false。

true 允许保存到 MAT 文件。如果文件为只读文件,MATLAB 会使用 fileattrib 函数更改系统权限。

false 禁止保存到 MAT 文件。MATLAB 不更改系统权限。

对于新文件,默认值为 true;对于现有文件,默认值为 false。

数据类型:logical

文本

任意文本,包括:CSV, TXT

csvread 逗号分隔的数字

读取逗号分隔值 (CSV) 文件

语法1

2

3M = csvread(filename) 将逗号分隔值 (CSV) 格式化文件读入数组 M 中。该文件只能包含数值。

M = csvread(filename,R1,C1) 从行偏移量 R1 和列偏移量 C1 开始读取文件中的数据。例如,偏移量 R1=0、C1=0 指定文件中的第一个值。

M = csvread(filename,R1,C1,[R1 C1 R2 C2]) 仅读取行偏移量 R1 和 R2 及列偏移量 C1 和 C2 界定的范围。另一种定义范围的方法是使用电子表格表示法(例如 'A1..B7')而非 [0 0 6 1]。

csvwrite 逗号分隔的数字

写入逗号分隔值文件

语法1

2csvwrite(filename,M) 将矩阵 M 作为逗号分隔值写入 filename 中。将 filename 指定为字符矢量或字符串,例如 'csvlist.dat' 或 "csvlist.dat"。

csvwrite(filename,M,row,col) 将矩阵 M 写入以指定行和列偏移开始的 filename 中。行和列参数从零开始,因此 row=0 和 C=0 指定文件中的第一个值。

提示

csvwrite 用换行符但不用回车符终止每行。

csvwrite 最多写入五位有效数字。如果您需要更高精度,请使用带精度参数的 dlmwrite。

csvwrite 不接受输入矩阵 M 的元胞数组。要导出仅包含数值数据的元胞数组,请在调用 csvwrite 之前使用 cell2mat 将元胞数组转换为数值矩阵。要导出包含混合字母和数值数据的元胞数组(其中每个元胞包含一个元素),可使用 xlswrite 创建 Excel® 电子表格(如果您的系统安装了 Excel)。

dlmread 分隔数字

语法1

2

3

4

5M = dlmread(filename) 将 ASCII 分隔的数值数据文件读取到矩阵 M。dlmread 函数从该文件中检测到分隔符,并将重复的空白视为一个分隔符。

M = dlmread(filename,delimiter) 使用指定的分隔符读取该文件中的数据,并将重复的分隔符视为单独的分隔符。

M = dlmread(filename,delimiter,R1,C1) 从行偏移量 R1 和列偏移量 C1 开始读取。例如,偏移量 R1=0、C1=0 指定文件中的第一个值。

要指定行和列的偏移量而不指定分隔符,请将空字符用作占位符,例如 M = dlmread(filename,'',2,1)。

M = dlmread(filename,delimiter,[R1 C1 R2 C2]) 仅读取行偏移量 R1 和 R2 及列偏移量 C1 和 C2 界定的范围。另一种定义范围的方法是使用电子表格表示法(例如 'A1..B7')而非 [0 0 6 1]。

dlmwrite 分隔数字

语法1

2

3

4

5dlmwrite(filename,M) 将数组 M 中的数值数据写入一个 ASCII 格式的文件 filename,并使用默认分隔符 (,) 分隔各数组元素。如果文件 filename 已存在,则 dlmwrite 将覆盖该文件。

dlmwrite(filename,M,'-append') 将数据追加到现有文件 filename 的末尾。

dlmwrite(___,Name,Value) 使用一个或多个名称-值对组参数另外指定分隔符、换行符、偏移量和精度选项。

dlmwrite(filename,M,delimiter) 将数组 M 写入文件 filename,并使用指定分隔符 delimiter 分隔各数组元素。

dlmwrite(filename,M,delimiter,row,col) 从目标文件中指定的第 row 行和第 col 列开始写入数组。前导行和列用 delimiter 分隔的空元素填充。

名称-值对组参数

指定可选的、以逗号分隔的 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

2

3

4

5

6

7

8num = xlsread(filename) 读取名为 filename 的 Microsoft Excel电子表格工作表中的第一张工作表,并在一个矩阵中返回数值数据。

num = xlsread(filename,sheet) 读取指定的工作表。

num = xlsread(filename,xlRange) 从工作簿的第一个工作表的指定范围内读取数据。使用 Excel 范围语法,例如 'A1:C3'。

num = xlsread(filename,sheet,xlRange) 读取指定的工作表和范围。

num = xlsread(filename,sheet,xlRange,'basic') 在 basic 导入模式下读取电子表格中的数据。如果您的计算机未安装 Windows版 Excel,xlsread 会自动在 basic 导入模式下运行,该模式支持 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。如果不指定所有参数,请使用空字符矢量 '' 作为占位符,例如,num = xlsread(filename,'','','basic')。

[num,txt,raw] = xlsread(___) 还使用先前语法中的任何输入参数,在元胞数组 txt 中返回文本字段,在元胞数组 raw 中返回数值数据和文本数据。

___ = xlsread(filename,-1) 打开一个 Excel 窗口以便按交互方式来选择数据。选择工作表,将鼠标拖放到所需范围上,然后点击确定。只有安装了 Microsoft Excel 软件的 Windows 计算机才支持此语法。

[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)(其中 processFcn 是函数句柄)读取电子表格,对数据调用 processFcn,并在数组 num 中以数值数据的形式返回最终结果。xlsread 函数在元胞数组 txt 中返回文本字段、在元胞数组 raw 中返回数值和文本数据,并在数组 custom 中返回 processFcn 的第二个输出。xlsread 函数不会更改电子表格中存储的数据。只有安装了 Excel 软件的 Windows 计算机才支持此语法。

xlswrite 工作表或电子表格范围

写入 Microsoft Excel 电子表格文件

语法1

2

3

4

5

6xlswrite(filename,A) 将矩阵 A 写入 Microsoft® Excel® 电子表格工作簿 filename 中的第一张工作表,从单元格 A1 开始写入。

xlswrite(filename,A,sheet) 将数据写入指定的工作表。

xlswrite(filename,A,xlRange) 将数据写入工作簿的第一个工作表中由 xlRange 指定的矩形区域内。使用 Excel 范围语法,例如 'A1:C3'。

xlswrite(filename,A,sheet,xlRange) 将数据写入指定的工作表和范围。

status = xlswrite(___) 使用先前语法中的任何输入参数返回写入操作的状态。当操作成功时,status 为 1。否则,status 为 0。

[status,message] = xlswrite(___) 还在结构体 message 中返回写入操作生成的任何警告或错误消息。

示例

将工作表读取到数值矩阵1

2

3

4

5

6

7创建一个名为 myExample.xlsx 的 Excel 文件。

values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};

headers = {'First','Second','Third'};

xlswrite('myExample.xlsx',[headers; values]);

读取第一个工作表中的数值数据。

filename = 'myExample.xlsx';

A = xlsread(filename)

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]

你可能感兴趣的:(matlab保存和载入数据)