文档

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

save

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

语法

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(filename) 将当前工作区中的所有变量保存在 MATLAB® 格式的二进制文件(MAT 文件)filename 中。如果 filename 已存在,save 会覆盖该文件。

示例

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

示例

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

示例

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 会使用工作区中的值覆盖它。

对于 ASCII 文件,'-append' 会将数据添加到文件末尾。

要追加到版本 6 的 MAT 文件,您还必须包括 '-v6' 作为输入参数。

示例

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

示例

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')

创建两个变量 pq 并将其保存到名为 pqfile.mat 的文件中。

p = rand(1,10);
q = ones(10);
save('pqfile.mat','p','q')

MATLAB® 将这些变量保存到当前文件夹中的文件 pqfile.mat 中。

您也可使用命令语法保存变量 pq

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

创建一个包含三个字段 abc 的结构体 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

创建两个变量并将其保存到名为 myFile.mat7.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,而不会覆盖以前的变量 pq

注意

要追加到版本 6 的 MAT 文件中,请同时指定 '-v6''-append'。例如,要将变量 a 保存到文件 test.mat 中,请调用:

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

将两个变量保存到 MAT 文件中。然后,将第三个变量(不进行压缩)追加到同一文件中。

创建两个变量 AB,然后将它们保存到 7.3 版的 MAT 文件中。默认情况下,save 函数会压缩变量 AB 并将其保存到 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              

输入参数

全部折叠

文件的名称,指定为字符向量或字符串。如果您未指定 filenamesave 函数保存为名为 matlab.mat 的文件。

如果 filename 没有扩展名(即没有点以及紧随其后的文本),并且没有指定 format 的值,则 MATLAB 会追加 .mat。如果 filename 不包含完整路径,MATLAB 将保存到当前文件夹中。您必须具有文件的写入权限。

使用命令形式的 save 时,不需要将输入括在单引号或双引号内。但如果 filename 包含空格,则您必须将参数括在单引号中。例如,save 'filename withspace.mat'

示例: 'myFile.mat'

数据类型: char | string

要保存的变量的名称,指定为一个或多个字符向量或字符串。使用命令形式的 save 时,不需要将输入括在单引号或双引号内。variables 可以采用下列形式之一。

variables 输入的格式要保存的变量
var1,...,varN保存列出的变量,指定为单个字符向量或字符串。
可使用 '*' 通配符来匹配模式。例如,save('filename.mat','A*') 会将以 A 开头的所有变量保存到文件中。
'-regexp',expr1,...,exprN仅保存名称与正则表达式匹配的变量,指定为字符向量或字符串。例如,save('filename.mat','-regexp','^Mon','^Tues') 仅将以 MonTues 开头的变量保存到文件中。
'-struct',structName structName 指定的标量结构体的字段作为单个变量存储在文件中。例如,save('filename.mat','-struct','S') 保存标量结构体 S
'-struct',structName,field1,...,fieldN将指定标量结构体的指定字段作为单个变量存储在文件中。例如,save('filename.mat,'-struct','S','a','b') 保存字段 S.aS.b
'-struct',structName,'-regexp',expr1,...,exprN仅存储名称与正则表达式匹配的字段,指定为字符向量或字符串。

数据类型: char | string

文件格式,指定为下列值之一。使用命令形式的 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

MAT 文件版本,指定为下列值之一。使用命令形式的 save 时,您无需将输入括在单引号或双引号中。

version 的值加载到的 MATLAB 版本支持功能压缩每个变量大小的最大值
'-v7.3'7.3 (R2006b) 或更高版本

保存并加载部分变量,以及版本 7 的所有功能。版本 7.3 还支持使用 '-nocompression' 选项保存变量而不进行压缩。

是(默认值)≥ 2 GB(64 位计算机)
'-v7'7.0 (R14) 或更高版本

Unicode® 字符编码。通过编码,可以在使用不同默认字符编码方案的系统之间共享文件,还可以使用版本 6 的所有功能。

每变量 2^31 字节
'-v6'5 (R8) 或更高版本

N 维数组、元胞数组、结构体数组、大于 19 个字符的变量名称,以及版本 4 的所有功能。

每变量 2^31 字节
'-v4'全部

二维 double、字符和稀疏数组。

每数组 100,000,000 个元素,每变量 2^31 字节

如果任何数据项要求了某些功能,而指定的版本不支持这些功能,MATLAB 将不保存这些项并发出警告。您指定的 MATLAB 软件版本不能高于当前使用的版本。

注意

7.3 版本的 MAT 文件使用基于 HDF5 的格式,该格式要求使用一些存储空间开销来描述文件内容。对于元胞数组、结构体数组或可以存储异构数据类型的其他容器,7.3 版本的 MAT 文件有时比版本 7 的 MAT 文件要大。

要查看或设置 MAT 文件的默认版本,请在“常规”预设中选择 MAT 文件保存格式选项。

提示

  • 为更加灵活地创建 ASCII 文件,可使用 dlmwritefprintf

  • 使用 save 函数保存图形对象可能导致文件较大,因为该文件包含重新生成对象需要的所有信息。

  • 请避免使用 save 函数保存图窗。改用 savefig 函数。在 R2014b 或更高版本中使用 save 保存图窗将使所得的 MAT 文件在早期 MATLAB 版本中无法访问。如果您使用 save 保存图窗,则函数会显示一个警告消息。在使用 save 之前删除所有图窗。请牢记图窗可能不直接存在于您的工作区中。例如,它们可能存储在结构体中或回调函数的工作区中。

在 R2006a 之前推出

此主题对您有帮助吗?