AnyMath 文档

tf2zp

将传递函数滤波器参数转换为零、极点和增益的形式。

库::`工程师`

语法

函数调用

* [参数:z],[参数:p],[参数:k]=tf2zp(<参数:b>>,[参数:a]) -找到一个零矩阵 [参数:z],极点的向量 [参数:p] 和相应的增益向量 [参数:k] 从传递函数的参数 [参数:b][参数:a]. 函数变换传递函数的多项式表示

+

+ 将一个输入和多个输出(单输入/多输出,SIMO)转换为传递函数的乘法器形式的连续系统

+

+

功能 *tf2zp* 度工作时应使用 例如,在连续传递函数中。 类似的功能 *tf2zpk* 当使用以度表示的传递函数时,它更有用。 .

争论

输入参数

# *b* — 传递函数分子的系数

+ 向量资料 | 矩阵

Details

传递函数分子的系数,指定为向量或矩阵。 如果 b -矩阵,然后每行 b 对应于系统的输出信号。 论点 b 包含按度降序排列的系数 . 列数 b 必须小于或等于参数的长度。 [参数:a].

数据类型

漂浮物32, 漂浮64</无翻译>

# *一个* — 传递函数分母的系数

+ 向量资料

Details

传递函数分母的系数,指定为向量。 论点 a 包含按度降序排列的系数 .

数据类型

漂浮物32, 漂浮64</无翻译>

输出参数

# *z* — 零

+ 矩阵

Details

系统的零作为矩阵返回。 论点 z 在其列中包含分子零。 论点 z 它具有与输出一样多的列。

# *p* — 电线杆

+ 向量资料

Details

系统的极点,作为列向量返回。 论点 p 包含传递函数的分母的系数的极点的坐标。

# *k* — 增益因素

+ 向量资料

Details

系统的增益系数,作为列向量返回。 论点 k 包含分子的每个传递函数的增益系数。

例子:

零、极点和连续系统的增益

Details

让我们创建一个具有以下传递函数的系统

让我们找到系统的零,极点和增益。 使用函数 *eqtflength* 以确保分子和分母具有相同的长度。

import EngeeDSP.Functions: eqtflength, tf2zp

b = [2 3]
a = [1 1/sqrt(2) 1/4]

b, a = eqtflength(b, a)
z, p, k = tf2zp(b, a)
println("z = ", z, "\np = ", p, "\nk = ", k)
z = [-1.5, 0.0]
p = ComplexF64[-0.35355339059327373 - 0.35355339059327384im, -0.35355339059327373 + 0.35355339059327384im]
k = 2.0

让我们绘制极点和零点,以确保它们在预期的位置。 为了清楚起见,让我们在图表中添加一个单位圆。

import Pkg
Pkg.add("ControlSystems")
using ControlSystems

H = tf(b, a)
z, p = tzeros(H), poles(H)

pzmap(H)
annotate!([(real(zi)+0.1, imag(zi), text("Zero", 8)) for zi in z])
annotate!([(real(pi)+0.1, imag(pi), text("Pole", 8)) for pi in p])

θ = range(0, 2π, length=200)
plot!(cos.(θ), sin.(θ),
      ls=:dash, color=:black,
      label="Unit Circle", aspect_ratio=:equal)

display(plot!())

tf2zp