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

指定函数参数类型

关于函数参数

通过在 MATLAB Function 模块编辑器的函数头中输入函数参数,可为 MATLAB Function 模块创建函数参数。当您定义参数时,Simulink® 软件会在 MATLAB Function 模块上创建相应的端口,您可以将它们与信号连接起来。您可以为您为 MATLAB Function 模块定义的每个参数选择一种数据类型模式。每一种数据类型模式都为选择一种数据类型提供了一套自己的选项。

默认情况下,MATLAB Function 模块函数参数的数据类型模式为 Inherited。这意味着函数参数将从进出的信号继承数据类型。要覆盖默认类型,请首先选择一种数据类型模式,然后根据该模式选择一种数据类型。

指定参数类型

要指定 MATLAB Function 模块函数参数的类型,请执行以下操作:

  1. 从 MATLAB Function 模块编辑器中选择 Edit Data,以打开 Ports and Data Manager。

  2. 在左窗格中选择感兴趣的参数。

  3. Data 属性对话框(右窗格)中,点击 Show data type assistant 按钮 以显示 Data Type Assistant。然后从 Mode 下拉菜单中选择一个选项。

    Data 属性对话框将动态改变,以显示用于指定与该模式有关的数据类型的其他字段。

  4. 根据您选择的模式,指定所需的数据类型:

    Mode指定的内容
    Inherit(默认值)不能指定值。数据类型从以前定义的数据继承而来,具体情况取决于您为 MATLAB Function 模块函数参数选择的作用域:
    • 如果作用域为 Input,则从指定端口的输入信号继承数据类型。

    • 如果作用域为 Output,则从指定端口的输出信号继承数据类型。

    • 如果作用域为 Parameter,则从关联的参数(可在 Simulink 封装子系统或 MATLAB® 工作区中定义)继承数据类型。

    请参阅继承参数数据类型

    Built in从支持的数据类型(如参数的内置数据类型中所述)下拉列表中选择数据类型。
    Fixed point

    按照指定 Fixed-Point Designer 数据属性中所述指定定点数据属性。

    Expression输入计算结果为数据类型的表达式,如使用表达式指定参数类型中所述。
    Bus ObjectBus object 字段中,输入 Simulink.Bus 对象的名称,以定义 MATLAB 结构体的属性。必须在基础工作区中定义总线对象。请参阅How Structure Inputs and Outputs Interface with Bus Signals

    注意

    您可以点击 Edit 按钮,使用 Simulink Bus Editor 创建或修改 Simulink.Bus 对象(请参阅将总线信号连接到 MATLAB Function 模块)。

    Enumerated在 Enumerated 字段中,输入您在基础工作区中定义的 Simulink.IntEnumType 对象的名称。请参阅Code Generation for Enumerations

继承参数数据类型

MATLAB Function 模块函数参数可从连接的信号继承数据类型,包括定点类型。

  1. 在 Ports and Data Manager 中选择感兴趣的参数。

  2. Data 属性对话框中,从 Type 下拉列表中选择 “Inherit:Same as Simulink

要查看支持的数据类型列表,请参阅参数的内置数据类型

注意

参数也可以从它连接的信号继承复/实性(无论参数的值是实数还是复数)。要继承复/实性,请将 Data 属性对话框上的 Complexity 字段设置为 Inherited

当您编译模型后,Ports and Data Manager 中的 Compiled Type 列将显示编译的仿真应用程序中从 Simulink 继承的实际类型。

继承的输出数据类型是从模块图操作(将值存储在指定输出中)推断得出的。在前面的示例中,变量 meanstdev 是对双精度操作数运算得出的,结果类型为 double。如果预期类型与推断类型匹配,则继承成功。在其他所有情况下,编译时将出现不匹配的情形。

注意

MATLAB Function 模块可像普通 MATLAB Function 模块一样具有继承的数据类型、大小和复/实性。但是,库模块在给定模型中的所有实例必须具有属性相同的输入。

参数的内置数据类型

当您为 Data type mode 选择 Built-in 时,Data 属性对话框中将显示一个 Data type 字段,提供支持的数据类型下拉列表。您还可以从 Ports and Data Manager 的 Data Type 列中选择数据类型。支持的数据类型包括:

数据类型说明

double

64 位双精度浮点

single

32 位单精度浮点

int32

32 位有符号整数

int16

16 位有符号整数

int8

8 位有符号整数

uint32

32 位无符号整数

uint16

16 位无符号整数

uint8

8 位无符号整数

boolean

布尔值(1 = true;0 = false

使用表达式指定参数类型

您可以在 Ports and Data Manager 中以表达式的形式指定 MATLAB Function 模块函数的参数类型。

  1. 从 Data 属性对话框的 Type 下拉菜单中选择 <data type expression>

  2. Type 字段中,将 <data type expression> 替换为计算结果为数据类型的表达式。允许使用以下表达式:

    • MATLAB 工作区中的别名类型,如 Simulink.AliasType 中所述。

    • fixdt 函数,用于创建描述定点或浮点数据类型的 Simulink.NumericType 对象

    • type (Stateflow) 操作符,使类型基于以前定义的数据

指定 Fixed-Point Designer 数据属性

MATLAB Function 模块可将信号和参数值表示为定点数。要对在 MATLAB Function 模块中使用定点数据的模型进行仿真,必须在系统上安装 Fixed-Point Designer™ 产品。

可以设置以下定点属性:

Signedness.  选择您希望定点数据的类型为 “Signed” 还是 “Unsigned”。有符号数据可以表示正量和负量。无符号数据只能表示正值。默认值为 “Signed”。

Word length.  指定用来存储量化整数的字的大小(以位为单位)。字长越大,可表示的数量越大,精度也更高。字长可以是 0 到 128 位之间的任何整数。默认值为 16。

Scaling.  指定定点数据的定标方法,以避免发生溢出情况并最大限度地减少量化错误。可以选择以下定标模式:

定标模式说明
Binary point”(默认值)

如果选择此模式,Data Type Assistant 将显示 Fraction Length 字段,以指定二进制小数点位置。

二进制小数点可以是正整数或负整数。正整数将二进制小数点从最右侧位左移指定位数。例如,如果输入 2,则将二进制小数点设置在从右侧数第二个位的前面。负整数将二进制小数点从最右侧位右移指定位数,如以下示例所示:

默认值为 0。

Slope and bias

如果选择此模式,Data Type Assistant 将显示用于输入 SlopeBias 的字段。

  • 斜率可以是任何实数。默认值为 1.0。

  • 偏置可以是任何实数。默认值为 0.0。

您可以通过表达式的形式输入斜率和偏置,在表达式中包含在 MATLAB 工作区中定义的参数。

注意

应尽可能使用二进制小数点定标,以简化定点数据在生成的代码中的实现。采用二进制小数点定标的定点数据运算只需进行简单的位移,不需要为单独的斜率和偏置值执行代价高昂的代码实现。

Data type override.  指定数据类型覆盖设置是 Inherit(默认值)还是 Off

Calculate Best-Precision Scaling.  Simulink 软件可以根据您指定的 Limit range 属性自动为 “Binary point” 和 “Slope and bias” 定标模式计算“最佳精度”值。

要自动计算最佳精度定标值,请执行以下操作:

  1. 指定 MinimumMaximum 或者同时指定这两个 Limit range 属性。

  2. 点击 Calculate Best-Precision Scaling

Simulink 软件计算定标值,然后将其显示在 Fraction Length 或者 SlopeBias 字段中。

注意

Limit range 属性不适用于 “Constant” 或 “Parameter” 作用域。因此,Simulink 不能为这些作用域计算最佳精度定标。

Fixed-point Details.  您可以查看以下定点详细信息:

定点详细信息说明
Representable maximum所选数据类型、符号、字长和小数长度(或数据类型、符号、斜率和偏置)可以表示的最大数字。
Maximum指定的最大值。
Minimum指定的最小值。
Representable minimum所选数据类型、符号、字长和小数长度(或数据类型、符号、斜率和偏置)可以表示的最小数字。
Precision给定字长和小数长度(或斜率和偏置)的精度。

在 MATLAB Function 模块中使用数据类型覆盖

如果您在 Simulink 中将 Data Type Override 模式设置为 DoubleSingleMATLAB Function 模块会将所有继承的输入信号和参数的类型分别设置为 fi doublefi single 对象(有关详细信息,请参阅MATLAB Function Block with Data Type Override (Fixed-Point Designer))。您必须检查继承的输入信号和参数的数据类型,并使用 Ports and Data Manager(请参阅 Ports and Data Manager)为不应该是定点的任何输入设置明确的类型。某些运算(如 sin)不适用于定点对象。

注意

如果不显式设置正确的输入类型,您可能会在设置 Data Type Override 后遇到编译问题。

 如何设置数据类型覆盖?

相关示例

详细信息