Discrete Transfer Fcn
实现离散传递函数

库:
Simulink /
Discrete
HDL Coder /
Discrete
HDL Coder /
HDL Floating Point Operations
描述
Discrete Transfer Fcn 模块实现 z 变换传递函数,如下所示:
其中 m+1 和 n+1 分别是分子和分母系数的数目。num 和 den 包含按 z 的降幂顺序排列的分子和分母系数。num 可以是向量或矩阵,而 den 必须为向量。分母的阶必须大于或等于分子的阶。
按 z 的降幂顺序指定分子和分母多项式的系数。利用此模块,您可以使用 z 形式的多项式来表示离散系统,这是控制工程师通常使用的方法。与之相反,Discrete Filter 模块则允许使用 z-1(延迟算子)形式的多项式来表示离散系统,这是信号处理工程师通常使用的方法。当分子和分母多项式的长度相同时,这两种方法相同。
Discrete Transfer Fcn 模块将 z 变换传递函数应用于输入的每个独立通道。输入处理参数用于指定该模块将输入的每个列作为单个通道处理(基于帧的处理)还是将输入的每个元素作为单个通道处理(基于采样的处理)。要执行基于帧的处理,您必须拥有 DSP System Toolbox™ 许可证。
指定初始状态
使用初始状态参数可以指定初始滤波器状态。您指定的初始状态是在实现离散传递函数的滤波器图中使用的 Unit Delay 模块的初始条件。
要确定您必须指定的初始状态数量以及如何指定这些状态,请使用下列各表。
基于帧的处理
输入 | 通道数 | 有效初始状态(对话框) | 有效初始状态(输入端口) |
---|---|---|---|
| 1 |
|
|
| N |
|
|
基于采样的处理
输入 | 通道数 | 有效初始状态(对话框) | 有效初始状态(输入端口) |
---|---|---|---|
| 1 |
|
|
| N |
|
|
| K×N |
|
|
当初始状态为标量时,模块将所有滤波器状态初始化为相同的标量值。要将所有状态初始化为零,请输入 0
。当初始状态为向量或矩阵时,每个向量或矩阵元素都为相应通道中的相应延迟元素指定唯一的初始状态:
向量长度必须等于滤波器中的延迟元素数,
M = max(number of zeros, number of poles)
。矩阵的行数必须与滤波器中的延迟元素数相同,
M = max(number of zeros, number of poles)
。矩阵的每一列还须对应输入信号的一个通道。
以下示例说明了初始滤波器输出与初始输入和状态之间的关系。假定有一个初始输入 u1,则第一个输出 y1 与初始状态 [x1, x2] 和初始输入的关系如下所示:
示例
Designing a High Angle of Attack Pitch Mode Control
Use the Control System Toolbox™ and Simulink® Control Design™ to interact with Simulink to design a digital pitch control for the aircraft. In this example, we will design the controller to permit the aircraft to operate at a high angle of attack with minimal pilot workload.
端口
输入
输入信号,指定为标量、向量或矩阵。
当您将输入处理参数设置为列作为通道(基于帧)时,模块支持可变大小的输入信号,即您可以在仿真期间更改信号的帧大小(行数),但通道(列)的数量必须保持不变。 (自 R2024a 起)
数据类型: single
| double
| int8
| int16
| int32
| fixed point
分子多项式的系数指定为 z 的降幂顺序的向量或矩阵。使用行向量可指定单个分子多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。分母的阶必须大于或等于分子的阶。
依赖关系
要启用此端口,请将分子源设置为输入端口。
分子和分母系数必须具有相同的复/实性。它们可以有不同的字长和小数长度。
数据类型: single
| double
| int8
| int16
| int32
| fixed point
分母多项式的系数,指定为 z 的降幂形式的向量。使用行向量可指定单个分母多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。分母的阶必须大于或等于分子的阶。分母首项系数不能为 0
。
依赖关系
要启用此端口,请将分母源设置为输入端口。
分子和分母系数必须具有相同的复/实性。它们可以有不同的字长和小数长度。
要将分母源设置为输入端口,请选择通过跳过除以分母首项系数(a0)进行优化参数。该模块忽略分母首项系数值 a0,并用 1 替换它。
数据类型: single
| double
| int8
| int16
| int32
| fixed point
外部重置信号,指定为标量。当指定的触发事件发生时,模块将状态重置为其初始条件。
提示
此端口的图标根据外部重置参数的值更改。
依赖关系
要启用此端口,请将外部重置设置为上升沿、下降沿、任一沿、电平或电平保持。
限制
重置信号必须是单精度、双精度、布尔或整数类型的标量。不支持 ufix1
以外的定点数据类型。
数据类型: single
| double
| Boolean
| int8
| int16
| int32
| fixed point
数据类型: single
| double
| int8
| int16
| int32
| fixed point
输出
输出信号,指定为标量、向量或矩阵。
当您将采样时间设置为 -1
时,输出信号的采样时间与输入信号 u 的采样时间相同。
数据类型: single
| double
| int8
| int16
| int32
| fixed point
参数
常设
将分子系数的信源指定为对话框或输入端口。
编程用法
模块参数:NumeratorSource |
类型:字符向量 |
值:'Dialog' | 'Input port' |
默认值:'Dialog'
|
离散传递函数的分子系数。要指定系数,请将源设置为对话框。然后,在值中按 z 的降幂顺序输入系数。使用行向量可指定单个分子多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。
依赖关系
要启用此参数,请将分子源设置为对话框。
编程用法
模块参数:Numerator |
类型:字符向量 |
值:标量 | 向量 | 矩阵 |
默认值:'[1]'
|
将分母系数的信源指定为对话框或输入端口。
要将分母源设置为输入端口,请选择通过跳过除以分母首项系数(a0)进行优化参数。
编程用法
模块参数:DenominatorSource |
类型:字符向量 |
值:'Dialog' | 'Input port' |
默认值:'Dialog'
|
离散传递函数的分母系数。要指定系数,请将源设置为对话框。然后,在值中按 z 的降幂顺序输入系数。使用行向量可指定单个分母多项式的系数。使用矩阵可以指定要应用于同一输入的多个滤波器的系数。矩阵的每一行表示一组滤波器抽头。
当您选择通过跳过除以分母首项系数(a0)进行优化参数时,如果您在模块对话框中指定分母系数且 a0 ≠ 1,则会发生错误。
依赖关系
要启用此参数,请将分母源设置为对话框。
编程用法
模块参数:Denominator |
类型:字符向量 |
值:标量 | 向量 | 矩阵 |
默认值:'[1 0.5]'
|
将初始状态的信源指定为对话框或输入端口。
编程用法
模块参数:InitialStatesSource |
类型:字符向量 |
值:'Dialog' | 'Input port' |
默认值:'Dialog'
|
将初始滤波器状态指定为标量、向量或矩阵。要了解如何指定初始状态,请参阅指定初始状态。
依赖关系
要启用此参数,请将初始状态源设置为对话框。
编程用法
模块参数:InitialStates |
类型:字符向量 |
值:标量 | 向量 | 矩阵 |
默认值:'0'
|
指定用于将状态重置为初始条件的触发事件。
重置模式 | 行为 |
---|---|
无 | 不重置。 |
上升沿 | 基于上升沿重置。 |
下降沿 | 基于下降沿重置。 |
任一沿 | 基于上升或下降沿重置。 |
电平 | 在下列任一情况下重置:
|
电平保持 | 当重置信号在当前时间步为非零值时重置 |
编程用法
模块参数:ExternalReset |
类型:字符向量 |
值:'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold' |
默认值:'None' |
指定模块是执行基于采样还是基于帧的处理。
元素作为通道(基于采样) - 将输入的每个元素作为独立通道处理。
列作为通道(基于帧) - 将输入的每列作为独立通道处理。
注意
基于帧的处理需要具有 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。此参数可以优化您的代码。如果在“模块”对话框中指定分母系数并且 a0≠1,则会出错。
如果从输入端口分母指定分母系数,则您必须选择通过跳过除以分母首项系数(a0)进行优化参数。选中此复选框时,模块会忽略分母首项系数 a0 并用 1 替换它。
当清除此复选框时,该模块在仿真期间完全可调。它在仿真和代码生成中均除以 a0。
编程用法
模块参数:a0EqualsOne
|
类型:字符向量 |
值:'off' | 'on' |
默认值:'off'
|
指定采样时间间隔。要继承采样时间,请将此参数设置为 -1
。有关详细信息,请参阅指定采样时间。
依赖关系
仅当您将此参数设置为 -1
以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | SampleTime |
值: | "-1" (默认) | scalar or vector in quotes |
点击此按钮以打开滤波器可视化工具 (fvtool
(DSP System Toolbox)),并显示在模块对话框中定义的滤波器的滤波器响应。
依赖关系
要启用此参数,请将分子源和分母源参数设置为对话框。
仅当您有有效的 DSP System Toolbox 许可证时,此参数才会出现。
数据类型
指定状态数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 与输入相同
内置整数,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数:StateDataTypeStr
|
类型:字符向量 |
值:'Inherit: Same as input' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Same as input'
|
指定分子系数数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置整数,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: NumCoefDataTypeStr |
类型:字符向量 |
值:'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® 软件使用此值执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数:NumCoefMin |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定分子系数可以具有的最大值。默认值为 []
(未指定)。Simulink 软件使用此值执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数:NumCoefMax |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定分子系数的乘积输出数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数:NumProductDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
指定分子系数的累加器数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: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 internal rule' |
指定分母系数数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置整数,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数:DenCoefDataTypeStr |
类型:字符向量 |
值:'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 软件使用此值执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数:DenCoefMin |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定分母系数可以具有的最大值。默认值为 []
(未指定)。Simulink 软件使用此值执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数:DenCoefMax |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定分母系数的乘积输出数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数:DenProductDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'int16' | 'int32' | 'int64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
指定分母系数的累加器数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: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 internal rule' |
指定输出数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: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 internal rule' |
指定模块可以输出的最小值。默认值为 []
(未指定)。Simulink 使用此值来执行:
仿真范围检查(请参阅指定信号范围)
定点数据类型的自动定标
编程用法
模块参数:OutMin |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定模块可以输出的最大值。默认值为 []
(未指定)。Simulink 使用此值来执行:
仿真范围检查(请参阅指定信号范围)
定点数据类型的自动定标
编程用法
模块参数:OutMax |
类型:字符向量 |
值:标量 |
默认值:'[]' |
选择此参数可防止定点工具覆盖您对此模块指定的数据类型。有关详细信息,请参阅Lock the Output Data Type Setting (Fixed-Point Designer)。
编程用法
模块参数:LockScale |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
指定对溢出是进行饱和处理还是绕回处理。
on
- 将溢出饱和处理为数据类型能够表示的最小值或最大值。off
- 溢出将绕回到数据类型可以表示的合适值。
例如,有符号 8 位整数 int8
可以表示的最大值是 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。
选择此参数后,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。
清除此参数后,软件会将导致溢出的值解释为
int8
,这可能产生意外结果。例如,以int8
表示的模块结果 130(二进制 1000 0010)为 -126。
提示
如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此参数。
如果您希望优化生成的代码的效率,请考虑清除此参数。清除此参数还可以帮助您避免过度地指定信号超出范围时模块的处理方式。有关详细信息,请参阅信号范围错误故障排除。
如果选中此参数,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。
一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | SaturateOnIntegerOverflow |
值: | 'off' (默认) | 'on' |
状态属性
使用此参数为模块状态指定唯一名称。默认值为 ' '
。如果此字段为空,则表示未指定任何名称。使用此参数时,请记住以下注意事项:
有效的标识符以字母或下划线字符开始,后跟字母数字或下划线字符。
状态名称仅适用于所选模块。
当您点击应用时,此参数将启用状态名称必须解析为 Simulink 信号对象。
有关详细信息,请参阅模型接口元素的 C 数据代码接口配置 (Simulink Coder)。
编程用法
模块参数:StateName |
类型:字符向量 |
值:唯一名称 |
默认值:'' |
选中此复选框会要求将状态名称解析为 Simulink 信号对象。
依赖关系
要启用此参数,请为状态名称指定值。仅当将模型配置参数信号解析设置为除无以外的值时,才会显示此参数。
编程用法
模块参数:StateMustResolveToSignalObject |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
详细信息
如果您有 Simulink Coverage™ 许可证,并且您将外部重置模块参数设置为除无之外的任何选项,则 Discrete Transfer Fcn 模块会接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,则当状态控制参数为同步时,您无法收集外部重置端口的覆盖率。
决策覆盖率测量模块重置的时间步的 true 结果和模块未重置的时间步的 false 结果。要接收 100% 的决策覆盖率,该模块必须在至少一个时间步内重置,并且在至少一个时间步内不重置。
如果选择对整数溢出进行饱和处理 (Simulink Coverage)参数,Discrete Transfer Fcn 模块会接收整数溢出饱和覆盖率。有关详细信息,请参阅整数溢出饱和处理覆盖率 (Simulink Coverage)。
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
此模块具有一个默认 HDL 架构。
通用 | |
---|---|
ConstMultiplierOptimization | 正则有符号数 (CSD) 或因子化 CSD 优化。默认值为无。另请参阅ConstMultiplierOptimization (HDL Coder)。 |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
原生浮点 | |
---|---|
HandleDenormals | 指定是否希望 HDL Coder 在设计中插入额外的逻辑来处理非正规数字。非正规数是大小非常小、必须使用包含前导零的尾数才能表示的浮点数。默认值为 inherit。另请参阅HandleDenormals (HDL Coder)。 |
LatencyStrategy | 指定对于浮点运算符是否将设计中的模块映射到 |
MantissaMultiplyStrategy | 指定在代码生成期间如何实现尾数乘法运算。通过使用不同设置,您可以控制目标 FPGA 设备上 DSP 的使用。默认值为 inherit。另请参阅MantissaMultiplyStrategy (HDL Coder)。 |
此模块不支持双精度数据类型。请改用单精度数据类型。
不支持帧、矩阵和向量输入数据类型。
分母首项系数 (a0) 必须为 1 或 -1。
不支持将数据类型设置为
Inherit: Inherit via internal rule
。
以下优化中不包括 Discrete Transfer Fcn 模块:
资源复用
分布式流水线
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
此模块仅支持有符号定点数据类型。
版本历史记录
在 R2006a 之前推出点击查看滤波器响应按钮,以可视化您在模块对话框中指定的滤波器的频率响应。
当您将输入处理参数设置为列作为通道(基于帧) 时,Discrete Transfer Fcn 模块支持可变大小的输入信号。
当输入是可变大小信号时,您可以在仿真期间更改信号的帧大小(行数),但通道(列)数必须保持不变。
默认情况下,Discrete Transfer Fcn 模块不再在“模块参数”对话框中显示采样时间参数。仅在命令行或现有模型中将采样时间设置为默认值 (-1
) 以外的值时,该参数才可见。有关详细信息,请参阅不建议设置采样时间的模块。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)