文档

保存模型

如何判断一个模特是否需要拯救

要判断一个模型是否需要保存,请查看Simulink中的标题栏万博1manbetx®编辑器。如果模型需要保存,标题栏中模型名称旁边会出现一个星号(即脏标志:*)。

要以编程方式确定一个模型是否需要保存,请使用model参数.例如:

if strcmp(get_param(gcs,'Dirty'),'on')结束

保存模型

若要首次保存模型,请在“Simulink编辑器”中选择万博1manbetx文件>保存.为模型文件提供位置和名称。有关名称要求,请参见模型名称

保存先前保存的模型:

  • 若要替换文件内容,请在Simulink编辑器中选择万博1manbetx文件>保存

  • 若要保存具有新名称或位置的模型,或将MDL格式更改为SLX格式,请在Simulink Editor中选择万博1manbetx文件>另存为

    请注意

    关于SLX格式的详细介绍,请参见升级模型到SLX

  • 要以与早期版本兼容的格式保存模型,请选择文件>导出模型到>之前的版本.看到导出模型到以前的Simulink版本万博1manbetx

模型名称

模型文件名必须以字母开头,可以包含字母、数字和下划线。文件名不能为:

  • 语言关键字(例如,如果结束

  • 保留名:“万博1manbetx模型”“sl”“科幻小说”

  • 一个MATLAB®软件命令

模型名称中的字符总数不能大于某个最大值,通常是63个字符。要找出您的系统的最大值是否大于63个字符,请使用MATLABnamelengthmax命令。

请注意

复制和粘贴名称遵循数字顺序(Gain1、Gain2等)的块将创建符合ASCII字符标准排序顺序约定的名称。这种排序顺序可能导致块名称上的数字序列难以理解。如果编号方案对您很重要,请显式地命名您的块,以便复制和粘贴它们创建遵循典型读取顺序的名称。为此,在块名中使用前导零,例如Gain001、Gain002,等等。

若要了解MATLAB如何确定在指定模型名称时调用哪个函数,请参见函数优先顺序(MATLAB)。

当你保存一个模型时会发生什么?

万博1manbetxSimulink将模型(框图)和块属性保存在模型文件中。

如果你有任何保存前或保存后函数,它们将按以下顺序执行:

  1. 所有的块PreSaveFcn先执行回调例程,然后执行模型PreSaveFcn回调例程执行。

  2. 万博1manbetxSimulink编写模型文件。

  3. 所有的块PostSaveFcn执行回调例程,然后执行模型PostSaveFcn执行。

在保存过程中,Simulink维护一个临时备份副本万博1manbetx(命名为modelname. bak),以便在出现错误时进行恢复。如果在保存过程中或在保存过程中的任何回调过程中发生错误,Simulink:万博1manbetx

  • 恢复原始文件

  • 将错误发生前保存的任何内容写入名为modelname.err

  • 发出错误消息

当保存从SLX文件加载的模型时,原始的SLX文件必须仍然存在。万博1manbetxSimulink对SLX文件执行增量加载和保存,因此如果原始文件在保存时丢失,Simulink会警告它不能完全重建文件。

以SLX文件格式保存模型

将新模型保存为SLX

万博1manbetxSimulink默认以SLX格式保存新模型和库,并带有文件扩展名.slx.SLX是一个压缩包,符合OPC (Open Packaging convention)互操作性标准。SLX使用Unicode存储模型信息®UTF-8格式的XML和其他国际格式。以SLX格式保万博1manbetx存Simulink模型:

  • 与MDL相比,通常减少文件大小。MDL和SLX之间的文件大小减小因模型而异。

  • 解决了以前版本中加载和保存包含韩语和中文字符的MDL文件的一些问题。

  • 启用增量加载和保存。万博1manbetxSimulink通过仅加载模型所需的部分和仅保存模型的修改部分来优化性能和内存使用。

您可以使用Simulink首选项指定保存新模型和库的文件格式万博1manbetx新模型和库的文件格式

升级模型到SLX

如果将MDL文件升级为SLX文件格式,则该文件包含与MDL文件相同的信息,并且始终有备份文件。当前存在的用于使用模型的所有功能和api,例如get_param而且set_param命令,在使用SLX文件格式时也可用。如果您将MDL文件升级为SLX文件格式而不更改模型名称或位置,那么Simulink将通过重命名MDL(如果可写的话)来创建备份文件。万博1manbetx

如果使用。保存现有的MDL文件文件>保存, 万博1manbetxSimulink尊重文件的当前格式,并将模型保存为MDL格式。

使用实例将已存在的MDL文件保存为SLX格式。

  1. 选择文件>另存为

  2. 保持默认值另存为类型为SLX,单击保存

    万博1manbetxSimulink以SLX格式保存您的模型,并通过重命名MDL(如果可写)来创建备份文件mymodel.mdl。releasename,例如,mymodel.mdl.R2010b

另外,使用save_system

保存系统mymodel
这个命令创建mymodel.slx,如果是现有文件mymodel.mdl是否可写,是否重命名mymodel.mdl。releasename

SLX文件优先于MDL文件,因此如果两个文件具有相同的名称,并且您没有指定文件扩展名,则加载SLX文件。

万博1manbetxSimulink Projects可以帮助您将文件迁移到SLX。有关示例,请参见将模型文件升级到SLX并保存修订历史

谨慎

如果您使用第三方源代码控制工具,请确保注册了模型文件扩展名.slx作为二进制文件格式。如果您不这样做,这些第三方工具可能会在您提交SLX文件时损坏它们。

使用SLX时可能考虑兼容性的操作 会发生什么 行动
对带扩展名的文件名的硬编码引用. mdl 脚本无法查找或处理使用新文件扩展名保存的模型.slx 使您的代码与. mdl而且.slx扩展。
使用如下函数哪一个而且什么而不是文件名。
默认采用文本格式的第三方源代码控制工具。 SLX文件的二进制格式可能会导致第三方工具在提交时损坏文件。 注册.slx作为二进制文件格式与第三方源代码控制工具。也推荐用于. mdl文件。看到用源代码控制工具注册模型文件
更改字符编码。 一些情况得到了改进,例如,SLX解决了以前版本中加载和保存包含韩语和中文字符的MDL文件的一些问题。然而,在不同区域之间共享模型仍然存在问题。 看到SLX文件和字符编码

MDL和SLX文件中的内容格式可能会发生变化。要对模型数据进行操作,请使用文档化的api(例如get_paramfind_system,万博1manbetx仿真软件。MDLInfo

保存具有不同字符编码的模型

MDL文件和字符编码

保存模型时,当前字符编码用于对存储在模型文件中的文本进行编码。对于MDL文件,如果您保存的模型的原始编码与当前编码不同,则可能导致模型损坏。

如果更改字符编码,则可能引入在当前编码中无法表示的字符。如果是这种情况,模型将保存为模型.mdl.err,在那里模型是模型名称,保持原始模型文件不变。万博1manbetxSimulink还显示一条错误消息,指定不能表示的第一个字符的行号和列号。

要从这个错误中恢复,可以:

  • 以SLX格式保存模型(参见以SLX文件格式保存模型).

  • 逐个查找并删除字符。

    1. 的文本编辑器中查找字符.err文件在保存错误消息指定的位置。

    2. 在开放模型中找到并删除相应的字符,并重新保存模型。

    3. 重复此过程,直到能够正确保存模型为止。

您的模型的原始编码可能表示当前会话中所做的所有文本更改,尽管这是不正确的。例如,假设您在当前编码为B的会话中打开一个原始编码为a的模型,进一步假设您编辑模型以包含在a和B中具有不同编码的字符,然后保存模型。如果此外x的编码在B y的编码是一样的,如果你插入x模型中,B在起作用时,保存模型,然后重新打开模型实际上仿真软件软件将显示x, y。提醒你这种腐败的可能性,会出现一个警告消息当你保存在当前模型和原始编码不同但是原始的编码可以编码,可能不正确,万博1manbetx所有要保存在模型文件中的字符。

SLX文件和字符编码

以SLX格式保万博1manbetx存Simulink模型通常可以减少文件大小,并解决以前版本中加载和保存包含韩语和中文字符的MDL文件的一些问题。

选择模型文件格式的注意事项:

  • 如果您正在加载和保存带有韩语或中文字符的模型,请使用SLX

  • 如果您希望从压缩的模型文件中获益,请使用SLX

  • 无论您使用SLX还是MDL, Simulink都可以检测万博1manbetx并警告模型是否包含当前语言环境中不支持的字符。万博1manbetx对于SLX,您可以使用模型顾问来帮助您,参见检查模型是否有外来字符

导出一个模型到前一个万博1manbetx版本

您可以以早期版本使用的格式导出(保存)用最新版本的Simulink软件创建的模型。万博1manbetx例如,与只能访问以前版本的Simulink产品的同事共享模型。万博1manbetx

以较早的格式导出模型:

  1. 在Simuli万博1manbetxnk编辑器中,选择文件>保存.这将在最新版本的Simulink中保存一个副本。万博1manbetx这一步避免了兼容性问题。

  2. 万博1manbetx选择Simulink编辑器文件>导出模型到>之前的版本

    弹出“导出到以前版本”对话框。

  3. 在对话框中,从另存为类型列表中,选择要将模型导出到的上一个版本。该列表支持7年以前万博1manbetx的版本。

  4. 单击保存按钮。

当您将模型导出到以前版本的格式时,模型将以以前的格式保存,而不管模型是否包含在该版本之后引入的块和特性。如果模型确实包含块或使用较早版本过期的特性,则在较早版本的Simulink软件中运行模型时,模型可能不会给出正确的结果。万博1manbetx此外,Simulink还将万博1manbetx延迟较早版本的块转换为黄色空掩码子系统块。例如,如果你使用save_system将模型导出到版本R2007b,模型包含多项式块,Simuli万博1manbetxnk转换多项式方块变成黄色空面具子系统块。万博1manbetxSimulink还从模型中删除了任何不受支持的功能。万博1manbetx看到save_system

从前一个保存万博1manbetx另一个版本

您可以打开在早期版本的Simulink中创建的模型,并将该模型导出到不同的早期版本。万博1manbetx为了防止兼容性问题,如果需要将模型从一个较早版本保存到另一个较早版本,请使用以下过程。

  1. 使用当前版本的Simulink打开用早期版本创建的模型万博1manbetx。

  2. 在进行任何更改之前,请通过选择将模型保存在当前版本中文件>保存

    在将模型保存到当前版本后,您可以根据需要更改并重新保存它。

  3. 通过选择将模型保存在早期版本的Simulink中万博1manbetx文件>导出模型到>之前的版本

  4. 启动较早的Simulink版本,并使万博1manbetx用它打开导出到该较早版本的模型。

  5. 通过选择将模型保存在早期版本中文件>保存

您现在可以在早期版本的Simulink中使用模型,就像在该版本中创建模型一样。万博1manbetx

参见Simulink首选项万博1manbetx,可以帮助您使用早期版本的模型:

另请参阅

相关的话题

这个话题有用吗?