tf2zp
将传递函数滤波器参数转换为零、极点和增益的形式。
库::`工程师`
例子:
零、极点和连续系统的增益
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!())
