MATLAB代码生成中的系统对象
您可以在MATLAB中生成C/ c++代码®从包含系统对象的系统MATLAB编码器™.您可以为部署在桌面和嵌入式系统中生成高效而紧凑的代码,并加速定点算法。
用于生成代码的系统对象的使用规则和限制
下面的使用规则和限制适用于在MATLAB生成的代码中使用System对象。
对象构造和初始化
如果对象存储在持久变量中,则通过将对象句柄嵌入到
如果
语句中调用isempty ()
.将参数设置为系统对象™构造函数作为编译时常量。
初始化所有系统对象的属性
releaseImpl
在结束之前使用setupImpl
.在代码生成中,不能将系统对象属性与其他MATLAB类对象一起初始化为默认值。必须在构造函数中初始化这些属性。
输入和输出
系统对象最多接受1024个输入。每个输入最多支持8个维度。
输入的数据类型不应该更改。
输入的复杂性不应该改变。
如果希望更改输入的大小,请验证是否启用了对可变大小的支持。对可变大小数据的代码生成支持还需要启用可变大小支持。在MATLAB中,默认启用了对可变大小数据的支持。
软件中预定义的系统对象不支持可变大小,如果它们的数据超过
DynamicMemoryAllocationThreshold
价值。不要将System对象设置为MATLAB函数(模型)块。
控件中的任何系统对象不要使用“保存并恢复模拟操作点”选项MATLAB函数(模型)块。
不将System对象作为示例输入参数传递给正在编译的函数
codegen
.不要将System对象传递给声明为外部的函数(在解释模式下调用的函数),使用
coder.extrinsic
函数。从外部函数和作用域返回的系统对象自动成为外部函数的系统对象可以用作另一个外部函数的输入。但是,这些函数并不生成代码。
属性
在MATLAB系统块,您不能对系统对象的离散状态属性使用可变大小。私有财产的大小可以是可变的。
对象不能用作属性的默认值。
只能向不可调优属性赋值一次,包括构造函数中的赋值。
不可调的属性值必须是常量。
对于定点输入,如果可调属性具有相关的数据类型属性,则只能在构造时或锁定对象后设置可调属性。
为
getNumInputsImpl
而且getNumOutputsImpl
方法,如果从对象属性设置返回参数,则该对象属性必须具有Nontunable
属性。
全局变量
系统对象中允许全局变量,除非在Simulink中使用该系统对象®通过MATLAB系统块。看到为全局数据生成代码.
方法
代码生成支持只对以下System对象方法可用:
得到
结束
(只供资料来源)集
(对于可调属性)
对于您定义的System对象,代码生成支持仅对以下方法可用:
代码原中的系统对象
您可以在MATLAB代码中以与包含任何其他元素相同的方式包含System对象。方法可以从MATLAB代码编译MEX文件codegen
命令,如果您有MATLAB编码器许可证。这个编译过程涉及许多优化,对于加速模拟非常有用。看到开始使用MATLAB编码器而且MATLAB类更多信息。
请注意
大多数(但不是全部)System对象支持代码生成。参考特定对象的参考页面获取信息。
中的系统对象MATLAB功能块
使用MATLAB函数(模型)块,您可以在Simulink模型中包含任何系统对象和任何MATLAB语言函数。然后,该模型可以生成可嵌入的代码。系统对象为代码生成提供了比大多数相关块更高级别的算法。有关更多信息,请参见用MATLAB函数块在Simulink中实现MATLAB函数(模型).
中的系统对象MATLAB系统阻止
使用MATLAB系统(模型)块,您可以在Simulink模型中包含使用类定义文件创建的单个系统对象。然后,模型可以生成可嵌入的代码。有关更多信息,请参见MATLAB系统块(模型).
系统对象和MATLAB编译器软件
MATLAB编译器™软件支持在MATLAB函数内部使用的系统对象。编译器产品不支持在MATLAB脚本中使用的System对象。