家伙在simu金宝applink上

金宝app基于模型的设计

使用数学表达式指定变量值:生成的代码

不久前,我发表了我描述的帖子 如何使用数学表达式指定变量值 使用 slexpr 功能。这引发了许多有关使用模型生成的代码的影响的问题 嵌入式编码器 ™。
为了帮助回答这些问题,我很高兴欢迎回访客座博客作者 大卫·巴尔布纳(David Balbuena)

默认行为

当我读盖伊的时候,我的第一个想法 最近贴文 slexpr “代码生成呢?!”
今天我将展示您如何使用 嵌入式编码器 ™在生成的代码中保留参数表达式。
让我们来使用使用变量的Guy模型的一部分 区域 (我将解释为什么我稍后会忽略斜边):
aket_model.png
在哪里 区域 是使用此代码创建的:
a = 金宝appsimulink.parameter(3);
b = 金宝appsimulink.parameter(4);
区域= sim金宝appulink.parameter(slexpr(slexpr)(“(a*b)*0.5”);
如果您使用默认设置生成代码 金宝appsimulink.parameter 对象,评估的值 区域 被绑架:
nontunable_code.png

指定存储类以保留表达式

嵌入式编码器可以通过做出两个更改来保留生成代码中的数学表达:
  1. 为了一个b更改存储类定义
  2. 为了区域,将存储类设置为出口global
我喜欢使用 代码映射编辑器 (Ctrl+Shift+C)为此,因为我可以使用CTRL+单击:
tempgif.gif
然后在代码中, 区域 将显示为可调参数:
tunable_code.png
和定义 区域 包含数学表达:
aket_definition.png
因为我用了 定义 存储课 一个 b ,这些显示为模型标头文件中的宏:
expression_params_definition.png
这些不是您可以使用的唯一存储类。一般规则是:
  • 对于表达式中使用的参数(一个b),存储类必须生成一个宏,例如定义进口定义
  • 对于派生参数(区域),存储类必须是非自动的(例如出口global或者导出
在我的示例中,我忽略了斜边( sqrt(a^2+b^2)) 参数是因为仅支持某些数学表达式,并且斜边的计算有两个不支持的部分:金宝app sqrt() 功能和 ^ 操作员
您可以阅读更多细节和限制 文档

现在轮到你了

我们知道此功能带有许多 限制 并仅支持金宝app 有限的操作集 。我们正在考虑增加对更多操作的支持并消除其中一些限制。金宝app如果您对此功能感兴趣,但受到限制的影响,请在下面的评论中告诉我们,以帮助我们优先考虑。
|

댓글

댓글을남기려면링크를클릭하여하여계정계정하거나계정만드십시오만드십시오만드십시오。