tf2zpk
将传递函数滤波器参数转换为零、极点和增益的形式。
库::`工程师`
例子:
极点、零点和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=:相等)
显示(情节!())