Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Discrete Transfer Fcn

实现离散传递函数

  • 库:
  • Simulink / Discrete

    HDL Coder / Discrete

    HDL Coder / HDL Floating Point Operations

  • Discrete Transfer Fcn block

说明

Discrete Transfer Fcn 模块实现 z 变换传递函数,如下所示:

H(z)=num(z)den(z)=num0zm+num1zm1+...+nummden0zn+den1zn1+...+denn

其中 m+1n+1 分别是分子和分母系数的数量。numden 包含按 z 的降幂顺序排列的分子和分母系数。num 可以是向量或矩阵,而 den 必须为向量。分母的阶必须大于或等于分子的阶。

z 的降幂顺序指定分子和分母多项式的系数。利用此模块,您可以使用 z 形式的多项式来表示离散系统,这是控制工程师通常使用的方法。与之相反,Discrete Filter 模块则允许使用 z-1(延迟算子)形式的多项式来表示离散系统,这是信号处理工程师通常使用的方法。当分子和分母多项式的长度相同时,这两种方法相同。

Discrete Transfer Fcn 模块将 z 变换传递函数应用于输入的每个独立通道。Input processing 参数用于指定该模块将输入的每个列作为单个通道处理(基于帧的处理)还是将输入的每个元素作为单个通道处理(基于采样的处理)。要执行基于帧的处理,您必须拥有 DSP System Toolbox™ 许可证。

指定初始状态

使用 Initial states 参数可以指定初始滤波器状态。要确定您必须指定的初始状态数量以及如何指定这些状态,请使用下列各表。

基于帧的处理

输入 通道数有效初始状态(对话框)有效初始状态(输入端口)
  • 列向量 (K×1)

  • 无向向量 (K)

1
  • 标量

  • 列向量 (M×1)

  • 行向量 (1×M)

  • 标量

  • 列向量 (M×1)

  • 行向量 (1×N)

  • 矩阵 (K×N)

N
  • 标量

  • 列向量 (M×1)

  • 行向量 (1×M)

  • 矩阵 (M×N)

  • 标量

  • 矩阵 (M×N)

基于采样的处理

输入通道数有效初始状态(对话框)有效初始状态(输入端口)
  • 标量

1
  • 标量

  • 列向量 (M×1)

  • 行向量 (1×M)

  • 标量

  • 列向量 (M×1)

  • 行向量 (1×M)

  • 行向量 (1×N)

  • 列向量 (N×1)

  • 无向向量 (N)

N
  • 标量

  • 列向量 (M×1)

  • 行向量 (1×M)

  • 矩阵 (M×N)

  • 标量

  • 矩阵 (K×N)

K×N
  • 标量

  • 列向量 (M×1)

  • 行向量 (1×M)

  • 矩阵 (M×(K×N))

  • 标量

Initial states 为标量时,模块将所有滤波器状态初始化为相同的标量值。要将所有状态初始化为零,请输入 0。当 Initial states 为向量或矩阵时,每个向量或矩阵元素都为相应通道中的相应延迟元素指定唯一的初始状态:

  • 向量长度必须等于滤波器中的延迟元素数,M = max(number of zeros, number of poles)

  • 矩阵的行数必须与滤波器中的延迟元素数相同,M = max(number of zeros, number of poles)。矩阵的每一列还须对应输入信号的一个通道。

以下示例说明了初始滤波器输出与初始输入和状态之间的关系。假定有一个初始输入 u1,则第一个输出 y1 与初始状态 [x1, x2] 和初始输入的关系如下所示:

y1=4x1x2=1/2(u13x1)

端口

输入

全部展开

输入信号,指定为标量、向量或矩阵。

数据类型: single | double | int8 | int16 | int32 | fixed point

分子多项式的系数指定为 z 的降幂顺序的向量或矩阵。使用行向量可指定单个分子多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。分母的阶必须大于或等于分子的阶。

Dependencies

要启用此端口,请将 Numerator Source 设置为 “Input port”。

分子和分母系数必须具有相同的复/实性。它们可以有不同的字长和小数长度。

数据类型: single | double | int8 | int16 | int32 | fixed point

分母多项式的系数指定为 z 的降幂形式的向量。使用行向量可指定单个分母多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。分母的阶必须大于或等于分子的阶。

Dependencies

要启用此端口,请将 Denominator Source 设置为 “Input port”。

分子和分母系数必须具有相同的复/实性。它们可以有不同的字长和小数长度。

数据类型: single | double | int8 | int16 | int32 | fixed point

外部重置信号,指定为标量。当指定的触发事件发生时,模块将状态重置为其初始条件。

提示

此端口的图标根据 External reset 参数的值更改。

Dependencies

要启用此端口,请将 External reset 设置为 “Rising”、“Falling”、“Either”、“Level” 或 “Level hold”。

限制

重置信号必须是单精度、双精度、布尔或整数类型的标量。不支持 ufix1 以外的定点数据类型。

数据类型: single | double | Boolean | int8 | int16 | int32 | fixed point

初始状态,指定为标量、向量或矩阵。有关指定状态的详细信息,请参阅指定初始状态。当输入或系数为复数时,状态为复数。

Dependencies

要启用此端口,请将 Initial states Source 设置为 “Input port”。

数据类型: single | double | int8 | int16 | int32 | fixed point

输出

全部展开

输出信号,指定为标量、向量或矩阵。

数据类型: single | double | int8 | int16 | int32 | fixed point

参数

全部展开

Main

将分子系数的信源指定为 “Dialog” 或 “Input port”。

编程用法

模块参数NumeratorSource
类型:字符向量
值:'Dialog' | 'Input port'
默认值:'Dialog'

离散传递函数的分子系数。要指定系数,请将 Source 设置为 “Dialog”。然后,在 Value 中按 z 的降幂顺序输入系数。使用行向量可指定单个分子多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。

Dependencies

要启用此参数,请将 Numerator Source 设置为 “Dialog”。

编程用法

模块参数:Numerator
类型:字符向量
值:标量 | 向量 | 矩阵
默认值:'[1]'

将分母系数的信源指定为 “Dialog” 或 “Input port”。

编程用法

模块参数DenominatorSource
类型:字符向量
值:'Dialog' | 'Input port'
默认值:'Dialog'

离散传递函数的分母系数。要指定系数,请将 Source 设置为 “Dialog”。然后,在 Value 中按 z 的降幂顺序输入系数。使用行向量可指定单个分母多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。

Dependencies

要启用此参数,请将 Denominator Source 设置为 “Dialog”。

编程用法

模块参数:Denominator
类型:字符向量
值:标量 | 向量 | 矩阵
默认值'[1 0.5]'

将初始状态的信源指定为 “Dialog” 或 “Input port”。

编程用法

模块参数InitialStatesSource
类型:字符向量
值:'Dialog' | 'Input port'
默认值:'Dialog'

将初始滤波器状态指定为标量、向量或矩阵。要了解如何指定初始状态,请参阅指定初始状态

依存关系

要启用此参数,请将 Initial states Source 设置为 “Dialog”。

编程用法

模块参数InitialStates
类型:字符向量
值:标量 | 向量 | 矩阵
默认值:'0'

指定用于将状态重置为初始条件的触发事件。

重置模式行为
None不重置。
Rising在上升边重置。
Falling在下降边重置。
Either在上升或下降边重置。
Level

在下列任一情况下重置:

  • 当重置信号在当前时间步为非零值时

  • 当重置信号值从上一时间步的非零更改为当前时间步的零时

Level hold当重置信号在当前时间步为非零值时重置

编程用法

模块参数ExternalReset
类型:字符向量
'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold'
默认值'None'

指定模块是执行基于采样还是基于帧的处理。

  • Elements as channels (sample based)” - 将输入的每个元素作为独立通道处理。

  • Columns as channels (frame based)” - 将输入的每列作为独立通道处理。

    注意

    基于帧的处理需要具有 DSP System Toolbox 许可证。

    有关详细信息,请参阅Sample- and Frame-Based Concepts (DSP System Toolbox)

编程用法

模块参数InputProcessing
类型:字符向量
值:'Elements as channels (sample based)' | 'Columns as channels (frame based)'
默认值:'Elements as channels (sample based)'

当分母的首项系数 a0 等于 1 时选择。此参数可以优化您的代码。

当选中此复选框时,该模块在仿真或生成的代码中不会执行对 a0 的除法运算。如果 a0 不等于 1,则会出错。

当清除此复选框时,该模块在仿真期间完全可调,并且在仿真和代码生成中均会执行除以 a0 的运算。

编程用法

模块参数a0EqualsOne
类型:字符向量
值:'off' | 'on'
默认值:'off'

指定采样时间间隔。要继承采样时间,请将此参数设置为 -1。有关详细信息,请参阅指定采样时间

编程用法

模块参数:SampleTime
类型:字符向量
值:标量 | 向量
默认值:'-1'

Data Types

指定状态数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Same as input

  • 内置整数,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

指定分子系数数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置整数,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数 NumCoeffDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>'
默认值:'Inherit: Inherit via internal rule'

指定分子系数可以具有的最小值。默认值为 [](未指定)。Simulink® 软件使用此值执行:

编程用法

模块参数NumCoeffMin
类型:字符向量
值:标量
默认值:'[]'

指定分子系数可以具有的最大值。默认值为 [](未指定)。Simulink 软件使用此值执行:

编程用法

模块参数NumCoeffMax
类型:字符向量
值:标量
默认值:'[]'

指定分子系数的乘积输出数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置数据类型,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数NumProductDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>'
默认值'Inherit: Inherit via interal rule'

指定分子系数的累加器数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置数据类型,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数NumAccumDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'Inherit: Same as product output' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>'
默认值'Inherit: Inherit via interal rule'

指定分母系数数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置整数,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数DenCoeffDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>'
默认值:'Inherit: Same wordlength as input'

指定分母系数可以具有的最小值。默认值为 [](未指定)。Simulink 软件使用此值执行:

编程用法

模块参数DenCoeffMin
类型:字符向量
值:标量
默认值:'[]'

指定分母系数可以具有的最大值。默认值为 [](未指定)。Simulink 软件使用此值执行:

编程用法

模块参数DenCoeffMax
类型:字符向量
值:标量
默认值:'[]'

指定分母系数的乘积输出数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置数据类型,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数DenProductDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>'
默认值'Inherit: Inherit via interal rule'

指定分母系数的累加器数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置数据类型,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数DenAccumDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'Inherit: Same as product output' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>'
默认值'Inherit: Inherit via interal rule'

指定输出数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via internal rule

  • 内置数据类型,例如 int8

  • 数据类型对象,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

模块参数:OutDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>'
默认值'Inherit: Inherit via interal rule'

指定模块可以输出的最小值。默认值为 [](未指定)。Simulink 使用此值来执行:

编程用法

模块参数:OutMin
类型:字符向量
值:标量
默认值:'[]'

指定模块可以输出的最大值。默认值为 [](未指定)。Simulink 使用此值来执行:

编程用法

模块参数:OutMax
类型:字符向量
值:标量
默认值:'[]'

选择此参数可防止定点工具覆盖您对此模块指定的数据类型。有关详细信息,请参阅Lock the Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数:LockScale
类型:字符向量
值:'off' | 'on'
默认值:'off'

指定定点运算的舍入模式。有关详细信息,请参阅Rounding (Fixed-Point Designer)

模块参数始终舍入到最接近的可表示值。要控制模块参数的舍入方法,请在封装字段中使用 MATLAB® 舍入函数输入表达式。

编程用法

模块参数:RndMeth
类型:字符向量
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值:'Floor'

指定对溢出是进行饱和处理还是绕回处理。

操作原理说明对溢出的影响示例

选中此复选框 (on)。

您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。

将溢出饱和处理为数据类型能够表示的最小值或最大值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。

不选中此复选框 (off)。

您需要优化所生成代码的效率。

您希望避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除

溢出会绕回到由数据类型表示的适当值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。清除该复选框时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。

如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。通常,代码生成过程可以检测何时不会发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法

模块参数:SaturateOnIntegerOverflow
类型:字符向量
值:'off' | 'on'
默认值:'off'

State Attributes

使用此参数为模块状态指定唯一名称。默认值为 ' '。如果此字段为空,则表示未指定任何名称。使用此参数时,请记住以下注意事项:

  • 有效的标识符以字母或下划线字符开始,后跟字母数字或下划线字符。

  • 状态名称仅适用于所选模块。

当您点击 Apply 时,此参数将启用 State name must resolve to Simulink signal object

有关详细信息,请参阅模型接口元素的 C 代码生成配置 (Simulink Coder)

编程用法

模块参数:StateName
类型:字符向量
值:唯一名称
默认值:''

选中此复选框会要求将状态名称解析为 Simulink 信号对象。

依存关系

要启用此参数,请为 State name 指定值。仅当将模型配置参数 Signal resolution 设置为除 “None” 以外的值时,才会显示此参数。

选中此复选框将禁用 Code generation storage class

编程用法

模块参数:StateMustResolveToSignalObject
类型:字符向量
值:'off' | 'on'
默认值:'off'

通过选择目标包定义的信号对象类,来选择自定义存储类包。例如,要应用来自内置包 mpt 的自定义存储类,请选择 “mpt.Signal”。除非您将基于 ERT 的代码生成目标与 Embedded Coder® 一起使用,否则自定义存储类不会影响生成的代码。

要使用除 Simulink 包之外的存储类包,您必须将该包加载到模型的 Embedded Coder 字典中。请参阅Load Storage Class Packages into Embedded Coder Dictionary (Embedded Coder)

有关使用存储类配置模型数据的信息,请参阅模型接口元素的 C 代码生成配置 (Embedded Coder)。有关自定义存储类的信息,请参阅Organize Data into Structures in Generated Code (Embedded Coder)

编程用法

模块参数:StateSignalObject
类型:字符向量
值:'Simulink.Signal' | '<StorageClass.PackageName>'
默认值:'Simulink.Signal'

选择用于代码生成的状态存储类。

使用 Signal object classSimulink 以外的包中选择自定义存储类。

依存关系

要启用此参数,请为 State name 指定值。

编程用法

模块参数:StateStorageClass
类型:字符向量
值:'Auto' | 'Model default' | 'ExportedGlobal' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom' | ...
默认值:'Auto'

指定存储类型限定符,如 constvolatile

注意

在以后的版本中将删除 TypeQualifier。要将存储类型限定符应用于数据,请使用自定义存储类和内存段。除非您将基于 ERT 的代码生成目标与 Embedded Coder 一起使用,否则自定义存储类和内存段不会影响生成的代码。

在仿真期间,模块将使用以下值:

  • 状态名称解析成的信号对象的初始值

  • 信号对象的最小值和最大值

有关详细信息,请参阅数据对象

依存关系

要启用此参数,请将 Code generation storage class 设置为 “ExportedGlobal”、“ImportedExtern”、“ImportedExternPointer” 或 “Model default”。除非您以前为此参数设置了值,否则它将不会显示。

编程用法

模块参数:RTWStateStorageTypeQualifier
类型:字符向量
值:'' | 'const' | 'volatile' | ...
默认值:''

模块特性

数据类型

double | fixed point[a] | integer[a] | single

直接馈通

多维信号

可变大小信号

过零检测

[a] 此模块仅支持有符号定点数据类型。

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

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

在 R2006a 之前推出