2012-03-05 305 views
2

现在,我有一个使用sim('y')命令运行y.mdl模型的x.m文件。 y.mdl的求解参数无法更改,模型中的所有元素都是必需的。没有诊断警告。一切正常运行 模型的输出是一个值(没有参数随时间变化,没有范围......)。只是双重价值。我甚至不需要打开模型。 问题:有什么方法可以提高x.m的性能吗?改善从m文件运行Simulink模型

由于提前,

约翰

回答

1

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

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

Mask Editor

然后在工作区中,您输入变量Simulink.Parameter S:

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-功能,您将获得:

RTW Screen

检查他们全部是可调的。然后,当你运行你的脚本,你开始模拟之前初始化的变量在工作区中,像这样:

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

这不是我最喜欢的方法,但它的作品。希望这会让你走到你需要去的地方。

+0

首先谢谢。 几乎得到它。 y.mdl需要x.m.所计算的47个输入参数。这些参数在工作区中。每次运行x.m时,这些参数都会有所不同。 “我需要做的就是从工作区加载y.exe输入参数。”任何线索? 谢谢 – 2012-03-05 16:26:52

+0

作品。 井字结果: 无S函数= 1.1596秒。 S函数= 0.3666秒。 非常感谢。 – 2012-03-06 08:18:41

相关问题