本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

MATLAB System 模块

为什么要使用 MATLAB System 模块?

利用 System object,您可以使用 MATLAB® 语言实现您的算法。MATLAB System 模块允许您在 Simulink® 中使用 System object。

使用 MATLAB System 模块,您可以:

  • 在 MATLAB 和 Simulink 中共享同一个 System object™

  • 实现 System object 与 Simulink 的集成

  • 在 Simulink 中使用您的算法之前,先在 MATLAB 中对算法进行单元测试

  • 自定义对话框的自定义设置

  • 通过更好的初始化进行高效仿真

  • 处理状态

  • 使用端口标签自定义模块图标

  • 访问两种仿真模式

选择正确的模块类型

在 Simulink 中包含 MATLAB 算法的机制有几种,例如:

  • MATLAB System 模块

  • MATLAB Function 模块

  • Interpreted MATLAB Function 模块

  • Level-2 MATLAB S-Function 模块

有关如何选择正确模块的帮助信息,请参阅比较自定义模块功能

System object

使用 MATLAB System 模块之前,必须具有要与该模块关联的 System object。System object 是一种特殊的 MATLAB 类。System object 专为实现和仿真输入随时间变化的动态系统而设计。

有关创建 System object 的详细信息,请参阅自定义适用于 Simulink 的 System object

注意

要在 Simulink 环境中使用您的 System object,它必须具有一个可以不带任何参数而直接调用的构造函数。默认情况下,System object 构造函数具有此功能,因此您不需要自行定义构造函数。但是,如果您创建自己的 System object 构造函数,则必须保证能够不带参数地调用该构造函数。

System object 存在于其他 MATLAB 产品中。MATLAB System 模块仅支持使用 MATLAB 语言编写的 System object。此外,如果一个 System object 具有对应的 Simulink 模块,则您不能为它实现 MATLAB System 模块。

解释执行或代码生成

您可以在 Simulink 模型中使用 MATLAB System 模块通过解释执行或代码生成进行仿真。

  • 对于解释执行,模型使用 MATLAB 执行引擎进行模块仿真。

  • 对于代码生成,模型使用代码生成进行模块仿真(要求使用代码生成支持的 MATLAB 代码子集)。要查看支持的函数列表,请参阅 C/C++ 代码生成支持的函数和对象

默认输入信号属性

如果 MATLAB System 模块有一个或多个输入端口未连接到另一个模块的输出端口,或者连接的端口具有欠定属性,则欠定属性的默认输入信号属性为:

数据属性默认值
数据类型双精度
大小[1 1] 标量
复/实性实数

MATLAB System 模块限制

当前不支持以下功能。

类别限制说明解决方法

System object

System object 的可调逻辑属性和字符向量属性在 MATLAB System 模块中是不可调参数。

数据类型

  • MATLAB System 模块不支持使用虚拟总线作为输入或输出。

  • System object 不能使用具有非二进制小数点定标或非零偏差的定点信号。

  • System object 不能使用用户定义的不透明数据类型。

采样时间

不能使用 MATLAB System 模块对连续时间系统或多速率系统建模。

线性化

不能使用基于 Jacobian 的线性化。

全局变量

在模型的 Configuration Parameters Simulation Target > Custom Code 窗格中定义并由 System object 引用的全局变量不能与 Stateflow®MATLAB Function 模块共享。

在 Configuration Parameters 对话框的 Simulation Target 窗格中打开 Import custom code option

调试

对基于代码生成的仿真进行 MATLAB 调试。

MATLAB System 模块的 Simulate using 参数设置为 “Interpreted execution”,然后进行调试。完成后,将 Simulate using 重置为 “Code generation”。

Fixed-Point Tool

Fixed-Point Tool 不会返回 MATLAB System 模块的设计最小值/最大值、最小值/最大值记录和自动定标信息。

模型覆盖率分析(Simulink Coverage™ 软件)

Simulink Coverage 不能为 Simulate using 参数设置为 “Interpreted execution” 的 MATLAB System 模块执行模型分析。

检查模型的兼容性(Simulink Design Verifier™ 软件)

Simulink Design Verifier 不能为包含 MATLAB System 模块的模型或子系统执行兼容性检查。

MATLAB System 和 System object 示例

有关 MATLAB System 和 System object 的示例,请参阅:

示例说明

辨识 FIR 系统中的 MATLAB System 模块

此示例说明如何使用 MATLAB System 模块通过 System object 实现 Simulink 模块。它突出显示了两个 MATLAB System 模块。通过点击模块对话框中的 Source code 链接,可访问每个 System object 的 MATLAB 源代码。

使用 MATLAB System 模块实现可变大小输入和输出信号

此示例说明如何使用 MATLAB System 模块实现具有可变大小输入和输出信号的 Simulink 模块。由于使用了可变大小信号,因此该示例使用了传播方法。

使用 MATLAB System 模块演示大数法则

此示例说明如何使用 MATLAB System 模块演示大数法则。由于使用了代码生成不支持的 MATLAB 函数,因此该示例使用了传播方法和解释执行。

对 MATLAB System 模块使用总线

此示例说明如何对 MATLAB System 模块的输入或输出端口使用非虚拟总线。由于使用了 Simulink 总线,因此该示例使用了传播方法。此示例使用模型回调在 MATLAB 基础工作区中定义总线类型。

另请参阅

相关示例

详细信息