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

MATLAB Function

MATLAB 代码包含在生成可嵌入式 C 代码的模型中

  • 库:
  • Simulink / User-Defined Functions

    HDL Coder / User-Defined Functions

说明

使用 MATLAB Function 模块可以编写用于 Simulink® 模型的 MATLAB® 函数。您创建的 MATLAB 函数针对仿真执行,并生成以 Simulink Coder™ 为目标的代码。如果您刚开始使用 Simulink 和 MATLAB 产品,请参阅使用模块实现 MATLAB 函数使用 MATLAB Function 模块创建自定义功能了解概述信息。

双击 MATLAB Function 模块将打开其编辑器,您可在其中编写 MATLAB 函数,例如:

要了解有关此编辑器的详细信息,请参阅MATLAB Function 模块编辑器

在函数头中将 MATLAB Function 模块的输入和输出数据指定为参数和返回值。前面的示例函数的参数和返回值对应于以下模型中的模块的输入和输出:

还可以使用 Ports and Data Manager 定义数据、输入触发器和函数调用输出,在 MATLAB Function 模块编辑器中选择 Edit Data 即可访问 Ports and Data Manager。请参阅Ports and Data Manager

MATLAB Function 模块基于分析来生成有效的可嵌入式代码,该分析可确定每个变量的大小、类和复/实性。该分析施加了以下限制:

除了语言限制,MATLAB Function 模块还支持 MATLAB 中提供的函数子集。C/C++ 代码生成支持的函数和对象给出了支持的函数的列表。这些函数包括常见类别的函数,例如:

注意

虽然此模块的代码会尝试生成与 MATLAB 完全相同的结果,但由于存在舍入误差,因此仍可能产生差异。这些数值差异最初可能是几个 eps,在重复运算之后可能会放大。建议您不要依赖 nan 的行为。对于相同的计算,不同的 C 编译器可能产生不同的结果。

注意

MATLAB Function 模块中包含了 %#codegen 指令,以强调该模块的 MATLAB 算法始终用于代码生成。不管有没有 %#codegen 指令,都不会更改 MATLAB Function 模块的上下文中的错误检查行为。有关详细信息,请参阅编译指令 %#codegen

为支持数据可视化,MATLAB Function 模块仅支持调用 MATLAB 函数进行仿真。请参阅外部函数了解该功能的一些限制,以及该功能如何与此模块的代码分析集成在一起。如果这些函数调用不直接影响任何 Simulink 输入或输出,则这些调用不会出现在 Simulink Coder 生成的代码中。

MATLAB Function 模块中,还可以调用在 Simulink Function 模块中定义的函数。如果在图表的“Properties”对话框中选中 Export Chart Level Functions (Make Global)Allow exported functions to be called by Simulink,则可以调用 Stateflow® 函数。

在 Ports and Data Manager 中,可以将模块输入声明为 Simulink 参数而不是端口。MATLAB Function 模块还支持继承输入、输出和参数的类型及大小。您也可以显式指定这些属性。有关在 MATLAB Function 模块中使用的变量的说明,请参阅指定函数参数类型指定函数参数大小添加参数

MATLAB Function 模块中不允许递归调用。

默认情况下,MATLAB Function 模块已启用直接馈通。要将其禁用,请在 Ports and Data Manager 中清除 Allow direct feedthrough 复选框。非直接馈通可启用语义,以确保输出仅依赖于当前状态。使用非直接馈通使您能够在反馈回路中使用 MATLAB Function 模块并防止代数环。

端口

输入

全部展开

对应于 MATLAB Function 模块内函数的第一个输入参数的输入。如果在编辑器中重命名函数参数,则模块将相应地重命名该端口。

MATLAB 支持但 Simulink 不支持的数据类型可能无法在 Simulink 模型和 MATLAB Function 模块内的函数之间传递。这些类型可在 MATLAB Function 模块内使用。

有关此模块的定点支持的详细信息,请参阅Fixed-Point Data Types with MATLAB Function Block (Fixed-Point Designer)和MATLAB Function Block with Data Type Override (Fixed-Point Designer)。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

MATLAB Function 模块中函数的第 n 个输入参数。在编辑器中添加参数时,模块会相应地添加端口。

MATLAB 支持但 Simulink 不支持的数据类型可能无法在 Simulink 模型和 MATLAB Function 模块内的函数之间传递。这些类型可在 MATLAB Function 模块内使用。

有关此模块的定点支持的详细信息,请参阅Fixed-Point Data Types with MATLAB Function Block (Fixed-Point Designer)和MATLAB Function Block with Data Type Override (Fixed-Point Designer)。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

输出

全部展开

MATLAB Function 模块内函数的第一个输出参数。如果在编辑器中重命名函数参数,则模块将相应地重命名该端口。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

MATLAB Function 模块内函数的第 n 个输出参数。在编辑器中添加参数时,模块会相应地添加端口。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

模块特性

数据类型

Boolean[a] | bus[a] | double[a] | enumerated[a] | fixed point[a] | integer[a] | single[a]

直接馈通

多维信号

有限[a]

可变大小信号

有限[a]

过零检测

[a] 实际支持的数据类型或功能取决于模块实施。

扩展功能

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

在 R2011a 中推出