人在仿真软件金宝app

金宝app仿真软件和基于模型的设计

避免不必要的数据副本通过重用I / O模型生成的代码金宝app

最近,我们有一些客户询问是否可以配置他们的模型改变值的公共汽车上,没有进行数据复制他们的模式。有几种方法可以做到这一点嵌入式编码器®,但我们会关注模型通过输入和输出作为参数。特别是,我们将展示如何通过引用传递参数为一个模型生成的代码块。这种技术可以用来消除不必要的变量副本从输入端口输出端口。这可能导致更高效的代码。

该模型

假设我们有一个模型,运行在其总线参数。这个模型的输入和输出有相同的总线类型,这个演示包括元素,b1一个布尔值,d1双。原则上,这是两个的许多元素。按CTRL + B为模型生成的代码。
ModelSnapshot.png

的代码

模型修改的值d1在公共汽车上的价值b1。如果我们从这个模型生成代码,我们得到以下阶跃函数:
空白A_step (my_bus * arg_in my_bus * arg_out)
{
real_T tmp;
* arg_out = * arg_in;
如果(arg_in - > b1) {
tmp = -2.5;
其他}{
tmp = 2.5;
}
arg_out - > d1 = tmp + arg_in - > d1;
}
注意,阶跃函数有两个参数,arg_In1arg_Out1,在4号线,将输入复制到输出的代码。如果这是一个大巴士,复制可能是相当昂贵的,所以我们想消除它。

一个更高效的代码

为了消除复制,我们就可以打开代码的映射面板与CTRL + SHIFT + C和功能选项卡。一旦在那里,点击预览列A_step超链接的功能。
CodeMappingsPanel.png
超链接将打开一个新窗口将允许我们配置C阶跃函数接口为我们的模型。
StepConfig.png
使我们的观点分享,我们确保为阶跃函数原型配置参数检查,然后设置C为输入和输出端口标识符名称相同的值。在我们的例子中,我们叫它arg_shared。当我们重新生成代码,我们得到:
空白A_step (my_bus * arg_shared)
{
real_T tmp;
如果(arg_shared - > b1) {
tmp = -2.5;
其他}{
tmp = 2.5;
}
arg_shared - > d1 + = tmp;
}
请注意,只有一个参数阶跃函数和拷贝elimiated,导致更高效的代码。

现在轮到你了

你在生成的代码中避免不必要的副本吗?什么样的改进生成的代码效率,你会发现有用吗?
|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。