主要内容

MATLAB代码生成中的系统对象

你可以在MATLAB中生成C/ c++代码®从包含system对象的系统中使用MATLAB编码器™.您可以为桌面和嵌入式系统中的部署生成高效和紧凑的代码,并加速定点算法。

生成代码的系统对象的使用规则和限制

下面的使用规则和限制适用于在MATLAB生成的代码中使用System对象。

对象的构造和初始化

  • 如果对象存储在持久变量中,则通过将对象句柄嵌入到如果声明与呼叫是空的()

  • 将System对象™构造函数的参数设置为编译时常量。

  • 初始化所有系统对象属性releaseImpl在结束之前使用setupImpl

  • 您无法使用其他MATLAB类对象初始化系统对象属性作为代码生成中的默认值。您必须在构造函数中初始化这些属性。

输入和输出

  • 系统对象最多接受1024个输入。每个输入最多八个维度。金宝app

  • 输入的数据类型不应更改。

  • 输入的复杂性不应改变。

  • 如果要更改输入的大小,请验证是否启用了对变量大小的支持。金宝app对变量大小数据的代码生成支持还要金宝app求启用可变大小支持。默认情况下,在MATLAB中,启用对变量大小金宝app数据的支持。

  • 在软件中预定义的系统对象不支持变大小,如果它们的数据超过金宝appDynamicMemoryAllocationThreshold价值。

  • 不设置系统对象为输出Matlab功能(金宝app模型)块。

  • 不使用保存和恢复模拟状态作为SimState选项的任何系统对象Matlab功能(金宝app模型)块。

  • 不要将System对象作为示例输入参数传递给正在编译的函数codegen

  • 不要将系统对象传递给声明为外在(以解释模式调用的函数)声明的函数coder.extrinsic功能。从外在功能返回的系统对象,自动变为外在的范围系统对象可以用作另一个外在功能的输入。但是,这些函数不会生成代码。

属性

  • MATLAB系统块时,你不能对System对象的离散状态属性使用可变大小。私有属性可以是可变大小的。

  • 对象不能用作属性的默认值。

  • 只能一次给不可调优属性赋值,包括构造函数中的赋值。

  • 不难的属性值必须是常量的。

  • 对于定点输入,如果可调属性具有依赖数据类型属性,则只能在构造时或锁定对象后设置可调属性。

  • getNuminputsimpl.getnumoutputsimpl.方法,如果从对象属性设置返回参数,则该对象属性必须具有Nontunable属性。

全局变量

  • 在System对象中允许使用全局变量,除非你在Simulink中使用该System对象金宝app®通过这一点MATLAB系统块。看到为全局数据生成代码

方法

codegen中的系统对象

您可以在MATLAB代码中包含System对象,就像您包含任何其他元素一样。然后,可以使用codegen命令,如果您有MATLAB编码器许可证。这个编译过程涉及许多优化,对于加速模拟非常有用。看到开始与MATLAB编码器MATLAB类为更多的信息。

请注意

大多数,但不是全部,系统对象支持代码生成。金宝app有关信息,请参阅特定对象的参考页面。

中的系统对象MATLAB功能块

使用Matlab功能(金宝app模型)块,你可以在Simulink模型中包含任何System对象和任何MATLAB语言函数。金宝app这个模型可以生成可嵌入的代码。系统对象为代码生成提供了比大多数相关块更高级的算法。有关详细信息,请参见使用块实现MATLAB函数(金宝app模型)

中的系统对象MATLAB系统块

使用MATLAB系统(金宝app模型)块,您可以在Simulink模型中包含您使用类定义文件创金宝app建的单个系统对象。然后,该模型可以生成嵌入式代码。有关详细信息,请参见MATLAB系统块(金宝app模型)

系统对象和MATLAB编译器软件

Matlab Compiler™软件支持系统对象使金宝app用内部MATLAB函数。编译器产品不支持在MATLAB脚本中使用的System对象。金宝app

相关话题