改进从m文件运行Simulink模型

时间:2012-03-05 10:26:17

标签: matlab simulink

现在,我有一个x.m文件,它使用sim('y')命令运行y.mdl模型。 无法更改y.mdl中的求解器参数,并且模型中的所有元素都是必需的。没有诊断警告。一切都很顺利 模型的输出是一个值(没有参数随时间变化,没有范围......)。只是一个双倍的价值。我甚至不需要打开模型。 问题:有没有办法改善x.m的性能?

提前致谢,

约翰

1 个答案:

答案 0 :(得分:1)

如果只需要通过sim命令执行模型,我会说这将是生成S函数的候选者。如果您有Real Time Workshop工具箱,则可以右键单击顶级子系统,选择Real-Time Workshop,然后选择Generate S-Function。这将生成一个S-Function模型,您可以将其另存为库并在y.mdl文件中使用以替换您的顶级块。这个方法将生成并编译C代码,它的执行速度比原始模型快得多。

如果需要初始化某些参数,可以使用Simulink掩码和Simulink.Parameter。首先,创建要模拟的子系统。然后通过右键单击子系统屏蔽子系统并点击Mask Subsystem。您要修改的任何参数都需要映射到掩码。因此,如果您的模型中有3个变量,abc。在掩码编辑器中,点击参数选项卡并输入类似于以下内容的数据:

Mask Editor

然后在工作区中,为变量输入Simulink.Parameter

a_var = Simulink.Parameter;
a_var.Value = 42;
b_var = Simulink.Parameter;
b_var.Value = 4;
c_var = Simulink.Parameter;
c_var.Value = 2;

当然,无论你需要什么值都是精细,标量,数组,矩阵等等。然后在子系统掩码中输入这些变量名称:

Enter Mask Data

然后当你右键点击变成S-Function时,你会得到:

RTW Screen

检查所有这些是否可调。然后在运行脚本时,在开始模拟之前初始化工作空间中的变量,如下所示:

evalin('base','a_var.Value = 22')

这不是我最喜欢的方法,但它有效。希望这能让你到达目的地。