文档

写完全内联S-Functions

一个完全内联函数构建你的算法(块)生成的代码,不能区分一个内置的块。通常,一个完全内联函数需要实现算法两次:一次仿真软件模型(C / c++墨西哥人s函数)和一次代码生成(TLC文件)。金宝app

使用的例子编写包装功能和TLC文件,你可以消除调用my_alg完全由指定明确的代码(即2.0 * u)wrapsfcn.tlc。虽然这可以提高性能,如果你是使用大量的C / c++代码,可以长时间的任务。你也要保持你的算法在两个地方,C / c++函数本身和相应的TLC文件。考虑性能收益可能利大于弊。内联在这个示例中,使用的算法输出你的节wrapsfcn.tlc文件,而不是写:

% < y > = my_alg (% < u >);

使用:

% < y > = 2.0 * % < u >;

这段代码中产生的代码mdlOutputs:

空白mdlOutputs (int_T tid){/ *罪:< Root > / * / rtB的罪。罪= rtP.Sin。振幅* sin (rtP.Sin。频率* ssGetT (rtS) + rtP.Sin.Phase);/ *功能块:< Root > / s函数* / rtB。S_Function = 2.0 * rtB.Sin;/ * * /明确的嵌入算法/ *外港块:< Root > / * /而无。= rtB.S_Function;}

目标语言编译器取代了电话my_alg算法本身。

多端口的功能

更先进的多端口内联函数的例子sfun_multiport.csfun_multiport.tlc。这个功能演示了如何创建一个完全内联TLC文件为一个包含多个端口的功能。

编写内联S-Functions指南

  • 考虑使用块属性RTWdata(见s函数RTWdata)。这个属性是一个特征向量的结构,你可以联想到一块。代码生成器保存的模型结构模型.rtw文件,使.rtw文件可读性更强。例如在MATLAB命令窗口中,假设您输入这些命令:

    mydata。field1 =“field1信息”;mydata。field2 =“field2信息”;set_param (sfun_block“RTWdata”,mydata);

    .rtw文件的代码生成器产生块包括注释中指定的结构mydata

  • 考虑使用mdlRTW函数内联C墨西哥人s函数生成的代码为:

    • 在生成的代码中重命名可调参数。

    • non-tunable参数引入到TLC文件。

相关的话题