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