将工作区变量保存到文件中
全页折叠
save(filename)
save(filename,variables)
save(filename,variables,fmt)
save(filename,variables,version)
save(filename,variables,version,'-nocompression')
save(filename,variables,'-append')
save(filename,variables,'-append','-nocompression')
save filename
示例
save(
将当前工作区中的所有变量保存在 MATLAB® 格式的二进制文件(MAT 文件)filename
)filename
中。如果 filename
已存在,save
会覆盖该文件。
示例
save(
仅保存 filename
,variables
)variables
指定的结构体数组的变量或字段。
示例
save(
以 filename
,variables
,fmt
)fmt
指定的文件格式保存。variables
参数为可选参数。如果您不指定 variables
,save
函数将保存工作区中的所有变量。
示例
save(
保存为 filename
,variables
,version
)version
指定的 MAT 文件版本。variables
参数为可选参数。
示例
save(
将变量保存到 MAT 文件,而不压缩。filename
,variables
,version
,'-nocompression')'-nocompression'
标志仅支持 7.3 版的 MAT 文件。因此,您必须将 version
指定为 '-v7.3'
。variables
参数为可选参数。
示例
save(
将新变量添加到一个现有文件中。如果 MAT 文件中已经存在变量,则 filename
,variables
,'-append')save
会使用工作区中的值覆盖它。
对于 ASCII 文件,'-append'
会将数据添加到文件末尾。
要追加到版本 6 的 MAT 文件,您还必须包括 '-v6'
作为输入参数。
示例
save(
将新变量添加到一个现有文件中,而不进行压缩。现有文件必须是 7.3 版的 MAT 文件。filename
,variables
,'-append','-nocompression')
示例
save
是命令形式的语法。命令形式需要的特殊字符更少。您无需键入括号或者将输入括在单引号或双引号内。使用空格(而不是逗号)分隔各个输入项。filename
例如,要保存名为 test.mat
的文件,这些语句是等效的:
save test.mat % command form
save('test.mat') % function form
您可以包括先前语法中介绍的任何输入。例如,要保存名为 X
的变量:
save test.mat X % command form
save('test.mat','X') % function form
请勿在任何输入项(例如 filename
)为变量时使用命令格式。
全部折叠
将工作区中的所有变量保存在二进制 MAT 文件 test.mat
中。如果 filename
为变量,则使用函数语法。
filename = 'test.mat';
save(filename)
或者,您也可使用命令语法。
save test.mat
从工作区中删除变量并通过 load
函数获取数据。
clear
load('test.mat')
尝试此示例
创建两个变量 p
和 q
并将其保存到名为 pqfile.mat
的文件中。
p = rand(1,10);
q = ones(10);
save('pqfile.mat','p','q')
MATLAB® 将这些变量保存到当前文件夹中的文件 pqfile.mat
中。
您也可使用命令语法保存变量 p
和 q
。
save pqfile.mat p q
创建两个变量,将其保存到 ASCII 文件中,然后查看文件内容。
p = rand(1,10);
q = ones(10);
save('pqfile.txt','p','q','-ascii')
type('pqfile.txt')
type
函数显示文件内容。
或者,使用 save
操作的命令语法。
save pqfile.txt p q -ascii
尝试此示例
创建一个包含三个字段 a
、b
和 c
的结构体 s1
。
s1.a = 12.7;
s1.b = {'abc',[4 5; 6 7]};
s1.c = 'Hello!';
将结构体 s1
的字段保存为名为 newstruct.mat
的文件中的单个变量。
save('newstruct.mat','-struct','s1');
通过 whos
函数检查文件内容。
disp('Contents of newstruct.mat:')
Contents of newstruct.mat:
whos('-file','newstruct.mat')
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x2 262 cell
c 1x6 12 char
创建两个变量并将其保存到名为 example.mat
的 7.3 版的 MAT 文件中。
A = rand(5);
B = magic(10);
save('example.mat','A','B','-v7.3')
也可使用 save
操作的命令语法。
save example.mat A B -v7.3
在 MATLAB 中尝试
创建两个变量并将其保存到名为 myFile.mat
的 7.3
版的 MAT 文件中,而不进行压缩。
A = rand(5);
B = magic(10);
save('myFile.mat','A','B','-v7.3','-nocompression')
或者,使用 save
操作的命令语法。
save myFile.mat A B -v7.3 -nocompression
'-nocompression'
标志有助于更快地保存那些大于 2
GB 或者不会从压缩中受益的变量。
将两个变量保存到 MAT 文件中。然后,将第三个变量追加到同一文件中。
p = rand(1,10);
q = ones(10);
save('test.mat','p','q')
查看 MAT 文件的内容。
whos('-file','test.mat')
Name Size Bytes Class Attributes
p 1x10 80 double
q 10x10 800 double
创建一个新变量 a
,并将其追加到 MAT 文件中。
a = 50;
save('test.mat','a','-append')
查看 MAT 文件的内容。
whos('-file','test.mat')
Name Size Bytes Class Attributes
a 1x1 8 double
p 1x10 80 double
q 10x10 800 double
变量 a
将追加到 test.mat
,而不会覆盖以前的变量 p
和 q
。
要追加到版本 6 的 MAT 文件中,请同时指定 '-v6'
和 '-append'
。例如,要将变量 a
保存到文件 test.mat
中,请调用:
save('test.mat','a','-v6','-append')
在 MATLAB 中尝试
将两个变量保存到 MAT 文件中。然后,将第三个变量(不进行压缩)追加到同一文件中。
创建两个变量 A
和 B
,然后将它们保存到 7.3
版的 MAT 文件中。默认情况下,save
函数会压缩变量 A
和 B
并将其保存到 myFile.mat
中。
A = rand(5);
B = magic(10);
save('myFile.mat','A','B','-v7.3')
查看 MAT 文件的内容。
whos('-file','myFile.mat')
Name Size Bytes Class Attributes
A 5x5 200 double
B 10x10 800 double
创建新变量 C
,并将其附加到 myFile.mat
,而不进行压缩。
C = 5;
save('myFile.mat','C','-append','-nocompression')
查看 MAT 文件的内容。
whos('-file','myFile.mat')
Name Size Bytes Class Attributes
A 5x5 200 double
B 10x10 800 double
C 1x1 8 double
全部折叠
filename
- 文件名'matlab.mat'
(默认) | 字符向量 | 字符串文件的名称,指定为字符向量或字符串。如果您未指定 filename
,save
函数保存为名为 matlab.mat
的文件。
如果 filename
没有扩展名(即没有点以及紧随其后的文本),并且没有指定 format
的值,则 MATLAB 会追加 .mat
。如果 filename
不包含完整路径,MATLAB 将保存到当前文件夹中。您必须具有文件的写入权限。
使用命令形式的 save
时,不需要将输入括在单引号或双引号内。但如果 filename
包含空格,则您必须将参数括在单引号中。例如,save 'filename withspace.mat'
。
示例: 'myFile.mat'
数据类型: char
| string
variables
- 要保存的变量名称要保存的变量的名称,指定为一个或多个字符向量或字符串。使用命令形式的 save
时,不需要将输入括在单引号或双引号内。variables
可以采用下列形式之一。
variables 输入的格式 |
要保存的变量 |
---|---|
var1,...,varN |
保存列出的变量,指定为单个字符向量或字符串。 可使用 '*' 通配符来匹配模式。例如,save('filename.mat','A*') 会将以 A 开头的所有变量保存到文件中。 |
'-regexp', |
仅保存名称与正则表达式匹配的变量,指定为字符向量或字符串。例如,save('filename.mat','-regexp','^Mon','^Tues') 仅将以 Mon 或 Tues 开头的变量保存到文件中。 |
'-struct', |
将 structName 指定的标量结构体的字段作为单个变量存储在文件中。例如,save('filename.mat','-struct','S') 保存标量结构体 S 。 |
'-struct', |
将指定标量结构体的指定字段作为单个变量存储在文件中。例如,save('filename.mat,'-struct','S','a','b') 保存字段 S.a 和 S.b 。 |
'-struct', |
仅存储名称与正则表达式匹配的字段,指定为字符向量或字符串。 |
数据类型: char
| string
fmt
- 文件格式'-mat'
(默认) | '-ascii'
| '-ascii','-tabs'
| '-ascii','-double'
| '-ascii','-double','-tabs'
文件格式,指定为下列值之一。使用命令形式的 save
时,您无需将输入括在单引号或双引号中,例如 save myFile.txt -ascii -tabs
。
fmt 的值 |
文件格式 |
---|---|
'-mat' |
二进制的 MAT 文件格式。 |
'-ascii' |
具有 8 位精度的文本格式。 |
'-ascii','-tabs' |
具有 8 位精度的以制表符分隔的文本格式。 |
'-ascii','-double' |
具有 16 位精度的文本格式。 |
'-ascii','-double','-tabs' |
具有 16 位精度的以制表符分隔的文本格式。 |
对于 MAT 文件,如果数据保存在一台计算机上,然后在另一台计算机上加载,则会根据不同计算机上的浮点格式在最大程度上保留精度和范围。
使用其中一种文本格式将 MATLAB 数值保存为文本文件。在这种情况下:
每个变量都必须是二维 double
数组。
输出项仅包含复数的实部。
MATLAB 将每个变量的数据按顺序写入到文件中。如果您计划使用 load
函数读取该文件,所有变量都必须具有相同的列数。load
函数从文件中创建单个变量。
如果您指定一种文本格式且任一变量为二维字符数组,则 MATLAB 将字符转换为其对应的内部 ASCII 代码。例如,'abc'
在文本文件中显示为:
9.7000000e+001 9.8000000e+001 9.9000000e+001
数据类型: char
| string
version
- MAT 文件版本'-v7.3'
| '-v7'
| '-v6'
| '-v4'
MAT 文件版本,指定为下列值之一。使用命令形式的 save
时,您无需将输入括在单引号或双引号中。
version 的值 |
加载到的 MATLAB 版本 | 支持功能 | 压缩 | 每个变量大小的最大值 |
---|---|---|---|---|
'-v7.3' |
7.3 (R2006b) 或更高版本 | 保存并加载部分变量,以及版本 7 的所有功能。版本 7.3 还支持使用 |
是(默认值) | ≥ 2 GB(64 位计算机) |
'-v7' |
7.0 (R14) 或更高版本 | Unicode® 字符编码。通过编码,可以在使用不同默认字符编码方案的系统之间共享文件,还可以使用版本 6 的所有功能。 |
是 | 每变量 2^31 字节 |
'-v6' |
5 (R8) 或更高版本 | N 维数组、元胞数组、结构体数组、大于 19 个字符的变量名称,以及版本 4 的所有功能。 |
否 | 每变量 2^31 字节 |
'-v4' |
全部 | 二维 |
否 | 每数组 100,000,000 个元素,每变量 2^31 字节 |
如果任何数据项要求了某些功能,而指定的版本不支持这些功能,MATLAB 将不保存这些项并发出警告。您指定的 MATLAB 软件版本不能高于当前使用的版本。
7.3 版本的 MAT 文件使用基于 HDF5 的格式,该格式要求使用一些存储空间开销来描述文件内容。对于元胞数组、结构体数组或可以存储异构数据类型的其他容器,7.3 版本的 MAT 文件有时比版本 7 的 MAT 文件要大。
要查看或设置 MAT 文件的默认版本,请在“常规”预设中选择 MAT 文件保存格式选项。
为更加灵活地创建 ASCII 文件,可使用 dlmwrite
或 fprintf
。
使用 save
函数保存图形对象可能导致文件较大,因为该文件包含重新生成对象需要的所有信息。
请避免使用 save
函数保存图窗。改用 savefig
函数。在 R2014b 或更高版本中使用 save
保存图窗将使所得的 MAT 文件在早期 MATLAB 版本中无法访问。如果您使用 save
保存图窗,则函数会显示一个警告消息。在使用 save
之前删除所有图窗。请牢记图窗可能不直接存在于您的工作区中。例如,它们可能存储在结构体中或回调函数的工作区中。
扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!
例如:想获得Python入门至精通学习资料,请回复关键词Python即可。