AnyMath 文档

tf2zpk

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

库::`工程师`

语法

函数调用

争论

输入参数

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

+ 向量资料

Details

传递函数的分子的系数,设为矢量。 论点 b 包含按度数升序排列的系数 .

数据类型

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

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

+ 向量资料

Details

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

数据类型

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

输出参数

# z — 系统的零

+ 向量资料

Details

系统的零作为列向量返回。

# p — 系统的极点

+ 向量资料

Details

系统的极点,作为列向量返回。

# k 是系统增益因子

+ 标量,标量

Details

系统的增益,作为标量返回。

例子:

极点、零点和IIR滤波器增益

Details

让我们设计一个巴特沃斯滤波器 3-具有归一化截止频率的阶数 rad/倒计时。 我们将找到极点,零点和滤波器的增益。

import EngeeDSP.Functions: butter, tf2zpk

b, a = butter(3, 0.4)
z, p, k = tf2zpk(b, a)
println("z = ", z, "\np = ", p, "\nk = ", k)
z = ComplexF64[-1.000006578089738 - 0.0im; -0.9999967109551287 + 5.6968468871119e-6im; -0.9999967109551287 - 5.6968468871119e-6im;;]
p = ComplexF64[0.20942804224088346 + 0.5581994780502226im; 0.20942804224088346 - 0.5581994780502226im; 0.1583844403245364 - 0.0im;;]
k = 0.098531160923927

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

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

H = tf(vec(b), vec(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])

θ=范围(0,2π,长度=200)
阴谋!(cos.(θ),罪。(θ),
      ls=:破折号,颜色=:黑色,
      xlabel="实部",ylabel="虚部",
      标签="单位圆",aspect_ratio=:相等)

显示(情节!())

tf2zpk