文档

编写完全内联的s函数

完全内联的s -函数将算法(块)构建到生成的代码中,您无法将其与内置的代码块区分开来。通常,一个完全内联的s函数需要您实现算法两次:一次用于Simulink模型(C/ c++ MEX s函数),一次用于代码生成(TLC文件)。金宝app

使用编写包装器S-Function和TLC文件(金宝appSimulink Coder),您可以消除调用my_alg完全通过指定显式代码(即,2.0 * u)wrapsfcn.tlc.虽然这可以提高性能,但如果您正在处理大量的C/ c++代码,任务可能会很长。您还必须在两个地方维护您的算法,C/ c++ s -函数本身和相应的TLC文件。考虑性能增益是否可能超过缺点。要内联本例中使用的算法,请在输出你的节wrapsfcn.tlc文件,而不是写:

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

使用:

% = 2.0 * %;

这个代码是在mdlOutputs

void mdlOutputs(int_T tid) {/* Sin Block: /Sin */ rtB. txt;rtP.Sin.振幅* Sin (rtP.Sin. Sin。频率* ssGetT(rtS) + rtP.Sin.Phase);/* S-Function Block: /S-Function */ rtB. txt;S_Function = 2.0 * rtB.Sin;/*显式嵌入算法*//* Outport Block: /Out */ rtY. txt;= rtB.S_Function;}

目标语言编译器替换调用my_alg算法本身。

多端口的功能

一个更高级的多端口内联s函数示例是sfun_multiport.csfun_multiport.tlc.这个s函数演示了如何为包含多个端口的s函数创建一个完全内联的TLC文件。

编写内联s -函数的指南

  • 考虑使用block属性RTWdata(见s函数RTWdata(金宝app仿真软件编码器))。这个属性是一个可以与块关联的字符向量结构。代码生成器将结构和模型保存在模型.rtw文件,并创建.rtw文件可读性更强。例如,在MATLAB命令窗口中,假设你输入以下命令:

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

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

  • 考虑使用mdlRTW函数将您的C MEX s -函数内联到生成的代码中:

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

    • 在TLC文件中引入不可调优参数。

相关的话题