Main Content

Simulink.saveVars

(不推荐)以 MATLAB 代码格式保存工作区变量及其值

不推荐使用 Simulink.saveVars。请改用 matlab.io.saveVariablesToScript

说明

示例

Simulink.saveVars(filename) 将当前工作区中可为其生成 MATLAB® 代码的所有变量保存到名为 filename.m 的 MATLAB 文件中。如果无法为某个变量生成 MATLAB 代码,则将该变量保存到名为 filename.mat 的关联的 MAT 文件中,并生成一条警告。如果上述任何文件已存在,则将其覆盖。文件名不能与当前工作区中任何变量的名称相匹配,但可以选择包含 .m 后缀。使用 Simulink.saveVars 不会对任何工作区的内容产生影响。

执行 MATLAB 文件会将保存在文件中的变量恢复到当前工作区中。如果存在关联的 MAT 文件,MATLAB 文件中的代码将加载该 MAT 文件,从而也将恢复其变量。当 MATLAB 文件和 MAT 文件同时存在时,请不要加载 MATLAB 文件,除非 MAT 文件可用,否则将发生错误。不要直接加载 MAT 文件,否则将导致数据恢复不完整。如果加载文件覆盖了任何现有变量,不会出现任何警告。

您可以编辑 Simulink.saveVars 创建的 MATLAB 文件。可以在 MATLAB 代码段之间或代码段内为保存的变量插入注释。但是,如果您以后使用 Simulink.saveVars 更新文件或者向文件中追加内容,则只有 MATLAB 代码段之间的注释被保留。因此,内部注释只应在不会再更改的文件中使用。

请不要编辑 MATLAB 文件的标头部分,此部分由前五个注释行组成。Simulink® 不会检查手动编辑的 MATLAB 文件在语法上是否正确。不要编辑文件中的任何 MATLAB 代码。请不要编辑 MAT 文件,而且永远不要尝试这么做。

Simulink.saveVars(filename, var1,...,varN) 仅保存 var1,...,varN 指定的变量。您可以使用通配符 * 保存与某个模式匹配的所有变量。* 匹配一个或多个字符,包括非字母数字字符。

Simulink.saveVars(filename,'-regexp',RegExps) 只保存名称与以逗号分隔的表达式列表 RegExps 中的正则表达式之一匹配的变量。有关详细信息,请参阅正则表达式。对此函数的调用可以同时指定 VarNames'-regexps', RegExps,按照此顺序并且以逗号分隔。

Simulink.saveVars(filename,___, UpdateOption) 按照 UpdateOption 的指示保存变量。

Simulink.saveVars(filename,___, Configuration) 根据指定的配置选项保存变量。

Simulink.saveVars(filename, ___, MatlabVer)MatlabVer 指定的 MATLAB 版本要求的格式保存它创建的任何 MAT 文件。

[r1, r2] = Simulink.saveVars(filename, ___) 将返回的变量保存在 r1r2 中。

示例

全部折叠

定义一些基础工作区变量,然后使用各种输入参量将它们保存到一个 MATLAB 文件中。

定义一些基础工作区变量,然后将其保存到一个新的 MATLAB 文件 myVars.m 中。

a = 1;
b = 2.5;
c = 'A string';
d = {a,b,c};
Simulink.saveVars('myVars');

再定义一些基础工作区变量,然后将它们追加到现有文件 myVars.m 中,而不更改之前保存到该文件中的值。

K = Simulink.Parameter;
myType = fixdt(1,16,3);
Simulink.saveVars('myVars','-append','K','myType');

用变量 V1V2 在 MATLAB 文件中的值对这些变量进行更新,对于值无法转换为 MATLAB 代码的变量,则使用 MAT 文件中的值进行更新。该文件必须已存在。超过 10 个元素的任何数组都将保存到 MAT 文件中,该文件可在任何版本的 MATLAB 上加载。返回参量 r1 列出保存到 MATLAB 文件中的任何变量的名称;r2 列出保存到 MAT 文件中的任何变量的名称。

[r1, r2] = Simulink.saveVars('MyFile', 'V1', 'V2', '-update',
'-maxnumel', 10, '-v4');

my3Dtable 三维数组的输出指定二维切片。指定二维切片沿第一个和第三个维度扩展。查看生成的 MATLAB 代码。

my3DTable = zeros(3, 4, 2, 'single');
Simulink.saveVars('mfile.m', 'my3DTable', '-2dslice', 1, 3);
my3DTable = zeros(3, 4, 2, 'single');
my3DTable (:,1,:) = single ( ...
  [1 13;
   5 17;
   9 21]);
my3DTable (:,2,:) = single( ...
  [2 14;
   6 18;
   10 22]);
my3DTable (:,3,:) = single( ...
  [3 15;
   7 19;
   11 23]);
my3DTable (:,4,:) = single( ...
  [4 16;
   8 20;
   12 24]);

输入参数

全部折叠

函数创建或更新的文件的名称,指定为字符向量或字符串标量。文件名不能与当前工作区中的任何变量的名称匹配。文件名可以带有后缀 .m,但函数将忽略该后缀。

变量或以逗号分隔的一序列变量,指定为字符向量或字符串标量。此函数只将指定的变量保存到输出文件中。您可以使用通配符 * 保存与某个模式匹配的所有变量。* 匹配一个或多个字符,包括非字母数字字符。

示例: Simulink.saveVars('myFile','A*') 保存工作区中名称以 A 开头的所有变量及其值。

正则表达式或以逗号分隔的一序列正则表达式,指定为字符向量或字符串。此函数只将其名称与某个表达式匹配的变量保存到输出文件中。有关详细信息,请参阅正则表达式。对此函数的调用可以同时指定 VarNames'-regexp', RegExps,按照此顺序并且以逗号分隔。

示例: Simulink.saveVars('myFile','-regexp','v*')

用于控制函数操作的关键字,指定为以下值之一:

  • '-create' - 创建新的 MATLAB 文件(和 MAT 文件,如果需要)。

  • '-update' - 更新由 filename 指定的现有 MATLAB 文件(和 MAT 文件,如果需要),只更改已存在于文件中的指定变量。文件中的变量顺序保持不变。

  • '-append' - 通过以下方式更新 filename 指定的现有 MATLAB 文件(和 MAT 文件,如果需要):

    • 更新文件中已存在的指定变量,保留现有顺序。

    • 追加文件中不存在的指定变量。

函数的配置选项,指定为以下任意或所有值,可以按任意顺序指定,如果出现多个选项,选项之间用逗号分隔:

  • '-maxnumel' MaxNum - 将为一个数组保存的元素数限制为 MaxNum,它必须是介于 0 和 10000 之间的整数。如果数组大于此设置,则整个数组将置于 MAT 文件而不是 MATLAB 脚本文件中,并生成一条警告。默认值:1000

  • '-maxlevels' MaxLevels - 将为结构体或元胞数组保存的级别数限制为 MaxLevels,它必须是介于 0 和 200 之间的整数。如果结构体或元胞数组比此设置深,则整个实体将出现在 MAT 文件而不是 MATLAB 脚本文件中,并生成一条警告。默认值:20

  • '-textwidth' TextWidth - 将 MATLAB 脚本文件中的文本换行宽度设置为 TextWidth,它必须是介于 32 和 256 之间的整数。默认值:76

  • '-2dslice' - 为表示 n 维(其中 n 大于 2)字符、逻辑或数值数据数组的二维切片设置两个维度。使用 '-2dslice' 选项生成更易于阅读的代码,它与 MATLAB 显示 n 维数组数据的方式一致。

    Simulink.saveVars 使用 n 维数组的前两个维度指定二维切片的大小,除非您在 -2dslice 选项之后提供两个正整数参量。如果您指定两个整数参量:

    • 两个整数都必须为正数。

    • 两个整数都必须小于或等于 n 维数组的维数。

    • 第二个整数必须大于第一个整数。

注意

您可以使用 MATLAB 预设来更改 -maxnumel-maxlevels'-2dslice'-textwidth 配置选项的默认值。在工作区窗格中,使用将变量另存为 MATLAB 脚本文件组中的选项。

MATLAB 的版本(该版本的语法将由此函数保存的任何 MAT 文件使用),由下列各值指定:

  • '-v7.3' - 7.3 或更高版本

  • '-v7.0' - 7.0 或更高版本

  • '-v6' - 版本 6 或更高版本

  • '-v4' - 任何 MATLAB 版本

输出参量

全部折叠

保存到 MATLAB 文件中的变量,指定为字符向量元胞数组。

保存到 MAT 文件中的变量,指定为字符向量元胞数组。

限制

Simulink.saveVars 函数:

  • 不保留共享引用项。

  • 忽略对象的动态属性。

  • 将以下内容保存到 MAT 文件中,尽管它们可以置于 MATLAB 文件中:

如果保存多个变量,则生成的 MATLAB 文件可能包含多行代码,并且执行时间可能会很长。为避免执行时间太长,请考虑以下替代方法:

提示

  • 如果您不需要将变量保存为容易理解的形式,请参阅 save 函数。

  • 如果您只需要保存总线对象,请使用 Simulink.Bus.save 函数。

  • 如果您只需要保存配置集,请使用 Simulink.ConfigSet.saveAs 方法。

版本历史记录

在 R2010a 中推出