保存模型
您可以保存模型、模板或库。有关如何创建模板和库的信息,请参阅从模型创建模板和创建自定义库。
您可以使用 SLX 格式或 MDL 格式保存 Simulink® 模型。
默认情况下,Simulink 以 SLX 格式保存新模型和库,文件扩展名为 .slx。SLX 格式是符合开放打包约定 (OPC) 互操作性标准的压缩包。SLX 格式使用 Unicode® UTF-8 以 XML 和其他国际格式存储模型信息。
与 MDL 文件相比,以 SLX 格式保存 Simulink 模型通常会减小文件大小。文件大小减小程度因模型而异。
以 SLX 格式保存模型还支持增量加载和保存。Simulink 可以只加载需要的模型部分并且只保存修改的模型部分,从而优化性能和内存使用。
您可以使用 Simulink 预设项File format for new models and libraries,指定用来保存新模型和库的文件格式。
除了模型本身,您也可以存储和保存模型运行所需的数据。当模型打开时,您可以使用变量在模型工作区和基础工作区中存储数据。有关这些工作区之间差异的详细信息,请参阅模型工作区。当您关闭模型时,数据将被删除,除非您进行了保存。
您可以将数据保存为 MAT 文件,或使用数据字典。数据字典是存储模型相关数据的持久性存储库。有关数据字典的详细信息,请参阅什么是数据字典?
确定模型是否有未保存的更改
如果模型有未保存的更改,在 Simulink 编辑器标题栏中的模型名称旁边会出现星号(也称为修改标志)。

要以编程方式确定模型是否有未保存的更改,请使用 get_param 函数查询模型参数 Dirty 的值。例如,如果当前系统是脏的,以下命令将保存当前系统 (gcs)。
if strcmp(get_param(gcs,'Dirty'),'on') save_system; end
保存模型
第一次保存模型时,请在 Simulink 编辑器中,在仿真选项卡上,点击保存。有关文件命名要求,请参阅选择有效的模型文件名。
要重新保存先前保存的模型,请执行以下操作之一:
要使用当前文件名保存模型,请在 Simulink 编辑器的仿真选项卡上,点击保存。
要使用新名称保存模型的内容或将其保存到新位置,或要更改模型格式,请在 Simulink 编辑器的仿真选项卡上,选择保存 > 另存为。有关 SLX 格式的信息,请参阅将模型文件格式转换为 SLX。
要以与先前 Simulink 版本兼容的格式保存模型,请在仿真选项卡上,选择保存 > 以前的版本。有关详细信息,请参阅将模型导出为以前的 Simulink 版本。
要用新的名称、位置或格式保存引用模型的内容,请打开引用模型的文件。然后,在仿真选项卡上,选择保存 > 另存为。
选择有效的模型文件名
模型文件名必须以字母开头,可以包含字母、数字和下划线。模型名称中的总字符数不能超过 150。
即使文件没有有效名称,您也可以打开模型,例如 mymodel (1).slx。Simulink 会打开模型并分配有效名称。要重命名或保存对新命名模型的更改,请点击保存。
在命名模型时,不要使用:
语言关键字(例如,
if、for或end)保留名称(例如,
simulink)MATLAB® 内置函数(例如,
plot)
有关在当前作用域中有多个文件具有相同名称时 MATLAB 如何确定调用哪个函数的信息,请参阅函数优先顺序。
保存模型变量和数据
如果您的 MATLAB 工作区包含您的 Simulink 模型运行所需的变量和数据,您可以保存这些内容并在下次打开模型时重用它们。
如果要保存工作区的所有内容,请在 MATLAB 编辑器中的 MATLAB 工具条上,在主页选项卡的变量部分中,点击保存工作区。将数据保存在 MAT 文件中。
如果要在工作区中保存某个特定的项,请在 MATLAB 编辑器的工作区面板中,右键点击该项并选择另存为。将该项保存在 MAT 文件中。
下次打开模型时,在运行仿真之前,先将该 MAT 文件加载到工作区。请参阅从 MAT 文件加载模型变量和数据。
指定在保存模型之前或之后运行的代码
回调是在指定操作点(例如在加载或保存模型后)运行的代码。
您可以通过选择对应的回调类型来指定操作点。
PreSaveFcn函数在您即将保存模型之前运行。PostSaveFcn函数在您保存模型后立即运行。
例如,如果您要在保存模型后自动清除所有工作区变量的值:
如果属性检查器已打开并最小化,请通过点击模型窗口右边缘的属性检查器还原它。
如果属性检查器未打开,请在 Simulink 工具条上,在建模选项卡的设计部分中,点击属性检查器。
在属性选项卡的回调部分中,选择 PostSaveFcn。
在文本框中,输入以下代码。
clearvars;
提示
您也可以将代码保存为 MATLAB 脚本,然后在文本框中输入脚本的名称。
保存模型。

现在,每次您保存模型时,工作区将在模型保存完成后清空。
要了解有关回调的更多信息,请参阅使用回调自定义模型行为。要以编程方式定义加载变量的回调,请参阅打开模型时通过编程方式加载变量。
将模型文件格式转换为 SLX
要将现有 MDL 文件转换为 SLX 文件格式,请执行以下操作:
在仿真选项卡上,选择保存 > 另存为。
保留另存类型的默认值
SLX,然后点击保存。
如果将 MDL 文件转换为 SLX 文件格式,则该文件包含与 MDL 文件相同的信息。
适用于 MDL 文件的函数,如 get_param 和 set_param,也适用于 SLX 文件格式。
当您将 MDL 文件转换为 SLX 文件格式而不更改模型名称或位置时,软件会通过将 MDL 文件重命名(如果该文件可写)为 mymodel.mdl.(例如 releasenamemymodel.mdl.R2010b)来创建备份文件。
SLX 文件的优先级高于 MDL 文件,因此,如果存在两个同名文件,而您没有指定文件扩展名,则将加载 SLX 文件。
小心
如果您使用第三方源代码管理工具,请将模型文件扩展名 .slx 注册为二进制文件格式。否则,当您提交 SLX 文件时,第三方工具可能会导致文件损坏。
下表说明使用 SLX 文件时可能存在兼容性问题的操作。
| 使用 SLX 时可能存在兼容性问题的操作 | 发生的情况 | 操作 |
|---|---|---|
硬编码引用带有 .mdl 扩展名的文件名。 | 脚本找不到或无法处理用新文件扩展名 .slx 保存的模型。 | 确保您的代码兼容 使用函数(如 |
| 第三方源代码管理工具默认情况下采用文本格式。 | 提交二进制格式的 SLX 文件可能导致文件被第三方工具所破坏。 | 使用第三方源代码管理工具将 .slx 和 .mdl 扩展名注册为二进制文件格式。请参阅 在 Git 中注册二进制文件 和使用 SVN 注册二进制文件。 |
MDL 和 SLX 文件内容的格式可能随时更改。要处理模型数据,请使用文档中介绍的函数,例如 get_param、find_system 和 Simulink.MDLInfo。
将模型导出为以前的 Simulink 版本
您可以将模型导出到以前版本的 Simulink。例如,您可以与只能访问旧版本 Simulink 的同事共享模型时。
要将模型导出到以前版本的 Simulink,请执行以下操作:
在继续之前,请确保已保存对模型所做的所有更改。如果模型有未保存的更改,请在 Simulink 编辑器中,在仿真选项卡上,点击保存。
在 Simulink 编辑器中,在仿真选项卡上,选择保存 > 以前的版本。
在“导出到以前的版本”对话框中,从另存类型列表中选择要将模型导出到的旧版本。此列表支持过去七年的版本。
点击保存。
当您将模型导出为旧版本时,不管模型中是否包含在该版本之后引入的模块和功能,都会以旧版本保存模型。如果模型中包含的模块或使用的功能是在以前版本之后开发的,则当您在以前版本的 Simulink 中运行模型时,模型可能无法给出正确的结果。
Simulink 将在以前版本中引入的模块转换为黄色的空封装 Subsystem 模块。
Simulink 还会从模型中删除任何不支持的功能。请参阅 save_system。