包括MATLAB生成可嵌入C代码的模型中的代码
万博1manbetxSimulink /用户定义函数
HDL编码器/用户定义函数
与一个MATLAB函数块,可以编写MATLAB®在Simulink中使用的函数万博1manbetx®模型。您创建的MATLAB函数执行仿真和生成代码万博1manbetx仿真软件编码器™目标。如果您是Simulink和MATLAB产品的万博1manbetx新手,请参阅s manbetx 845用块实现MATLAB函数和使用MATLAB函数块创建自定义功能概述。
双击MATLAB函数块,打开它的编辑器,在这里编写MATLAB函数,如下面的例子:
要了解有关此编辑器的更多信息,请参见MATLAB函数块编辑器.
您可以将输入和输出数据指定给MATLAB函数函数头中的块作为参数和返回值。前面示例函数的参数和返回值对应于模型:
您还可以使用端口和数据管理器定义数据、输入触发器和函数调用输出,您可以通过选择从MATLAB函数块编辑器中访问端口和数据管理器编辑数据.看见端口和数据管理器.
这个MATLAB函数块基于确定每个变量的大小、类和复杂性的分析生成有效的可嵌入代码。这种分析施加了以下限制:
对变量的第一个赋值定义了它的大小、类和复杂性。
初始赋值后不能重新赋值变量属性,除非使用变量大小数据或出于不同目的重用代码中的变量。
看见变量属性的重新分配.
除了语言限制,MATLAB函数块支持MAT万博1manbetxLAB中可用函数的子集。中提供了受支持函数的列表C/ c++代码生成支持的函数和对象万博1manbetx.这些职能包括一般类别的职能,例如:
笔记
尽管此块的代码试图产生与MATLAB完全相同的结果,但由于舍入错误,可能会出现差异。这些数字上的差异,可能是很少的EPS
最初,经过反复操作后可以放大。依赖的行为楠
不推荐。对于相同的计算,不同的C编译器可以产生不同的结果。
笔记
在MATLAB函数块,% # codegen
包含指令是为了强调块的MATLAB算法始终用于代码生成。这个% # codegen
指令(或不存在该指令)不会更改MATLAB函数块。有关更多信息,请参见编译指令%#codegen.
为了支万博1manbetx持数据可视化MATLAB函数块只支持对M万博1manbetxATLAB函数的仿真调用。看见使用MATLAB引擎在生成的代码中执行函数调用了解此功能的一些限制,以及它如何与此块的代码分析集成。如果这些函数调用不直接影响任何Simulink的输入或输出,则调用不会出现在万博1manbetx万博1manbetx仿真软件编码器生成的代码。
从MATLAB函数块中定义的函数,也可以调用万博1manbetxSimulink函数块您可以调用Stateflow®功能与导出图表级功能(Make Global)和允许Simulink调用导出的函数万博1manbetx选中图表属性对话框中的。
在端口和数据管理器中,可以将块输入声明为Simulink参数而不是端口。这个万博1manbetxMATLAB函数块还支持输入、输出和参万博1manbetx数的类型和大小继承。还可以显式指定这些属性。看见函数参数类型,大小函数参数,添加参数参数的变量描述MATLAB函数块。
中不允许递归调用MATLAB函数块。
默认情况下,MATLAB函数块具有直接馈通功能。要禁用它,在端口和数据管理器中,清除允许直接馈通复选框。非直接馈通语义确保输出仅依赖于当前状态。使用非直接馈通使您能够使用MATLAB函数阻塞反馈回路,防止代数回路。有关更多信息,请参见在MATLAB功能块中使用非直接馈通.