您可以在MATLAB中生成C/C++代码®从包含系统对象的系统中,使用MATLAB编码器™.您可以生成高效和紧凑的代码,用于在桌面和嵌入式系统中部署,并加速定点算法。
以下使用规则和限制适用于在MATLAB生成的代码中使用系统对象。
对象构造和初始化
如果对象存储在持久变量中,则通过将对象句柄嵌入到如果
声明,并呼吁isempty ()
.
将参数设置为系统对象™ 构造函数作为编译时常量。
初始化所有系统对象属性释放
使用在结尾之前setupImpl
.
在代码生成中,不能使用其他MATLAB类对象作为默认值初始化System对象属性。必须在构造函数中初始化这些属性。
投入和产出
系统对象最多支持1024个输入。每个输入最多支持8个维度。金宝app
输入的数据类型不应该改变。
输入的复杂性不应改变。
如果您希望更改输入的大小,请验证是否启用了可变大小支持。金宝app对可变大小数据的代码生成支持还需金宝app要启用可变大小支持。在MATLAB中,默认情况下,支持可变大小的金宝app数据。
如果软件中预定义的系统对象的数据超过金宝appDynamicMemoryAllocationThreshold
价值
不要将系统对象设置为来自的输出MATLAB函数(金宝appSimulink)块
请勿将“将模拟状态保存并还原为模拟状态”选项用于图形中的任何系统对象MATLAB函数(金宝appSimulink)块
不要将系统对象作为示例输入参数传递给正在使用编码基因
.
不要将System对象传递给声明为外部(以解释模式调用的函数)的函数外部编码器
函数。从外部函数返回的系统对象和范围自动成为外部函数的系统对象可以用作另一个外部函数的输入。但是,这些函数不会生成代码。
性质
在里面MATLAB系统块,则不能对系统对象的离散状态特性使用可变大小。私有属性的大小可以是可变的。
对象不能用作属性的默认值。
您只能将值赋给非功能属性一次,包括构造函数中的赋值。
不可调优属性值必须是常量。
对于定点输入,如果可调属性具有从属数据类型属性,则只能在构造时或锁定对象后设置可调属性。
对于getNumInputsImpl
和getNumOutputsImpl
方法,如果从对象属性设置返回参数,则该对象属性必须具有不能
属性
全局变量
允许在系统对象中使用全局变量,除非在Simulink中使用该系统对象金宝app®通过MATLAB系统块看见为全局数据生成代码.
方法
代码生成支持仅适用于以下系统对象金宝app方法:
得到
伊斯通
(来源)
设置
(可调属性)
对于您定义的System对象,代码生成支持仅对以下方法可用:金宝app
在MATLAB代码中包含系统对象的方式与包含任何其他元素的方式相同。然后,您可以使用编码基因
命令,如果您有MATLAB编码器许可证此编译过程涉及许多优化,对于加速模拟非常有用。看见开始使用MATLAB编码器和MATLAB类了解更多信息。
笔记
大多数(但不是全部)System对象支持代码生成。金宝app参考特定对象的参考页面获取信息。
使用MATLAB函数(金宝appSimulink)块中,可以在Simulink模型中包含任何系统对象和任何MATLAB语言函数。然后,该模型可以生成可嵌入的代码。系统对象为代码生成提供了比大多数关联块更高级的金宝app算法。有关详细信息,请参阅用块实现MATLAB函数(金宝appSimulink).
使用MATLAB系统(金宝appSimulink)块,可以在Simulink模型中包含使用类定义文件创建的金宝app单个System对象。然后,模型可以生成可嵌入的代码。有关更多信息,请参见MATLAB系统块(金宝appSimulink).
MATLAB编译器™软件支持在MATL金宝appAB函数中使用系统对象。编译器产品不支持在MATLAB脚本中使用系统对象。