czt
啁啾Z-变换。
库::`工程师`
争论
例子:
随机向量的CZT
Details
创建随机向量 x 长度 1013. 让我们使用函数计算它的DFT *czt*.
import EngeeDSP.Functions: randn, czt
using Random
Random.seed!(1234)
x = randn(1013, 1)
y = czt(x)
频率响应的窄带部分
Details
使用函数 *czt* 以增加滤波器的频率响应的窄带部分。
让我们设计一个低通FIR滤波器 30-th顺序,使用窗口方法。 设置采样频率 1 kHz和截止频率 125 赫兹。 我们使用矩形窗口。 让我们找到滤波器的传递函数。
import EngeeDSP.Functions: fir1, rectwin
fs = 1000
h = fir1(30, 125 / (fs/2), rectwin(31))
计算滤波器的DFT和CZT。 让我们将CZT的频率范围限制在从 75 以前 175 赫兹。 生成 1024 每种情况下的参考点。
import EngeeDSP.Functions: fft, czt
m = 1024
y = fft(h, m)
f1 = 75
f2 = 175
w = exp(-im * 2π * (f2 - f1) / (m * fs))
a = exp(im * 2π * f1 / fs)
z = czt(h, m, w, a)
让我们构建转换图。 放大感兴趣区域。
fn = (0:m-1) ./ m
fy = fs .* fn
fz = (f2 - f1) .* fn .+ f1
plot(fy, abs.(y), label="FFT")
plot!(fz, abs.(z), label="CZT")
xlims!(50, 200)
xlabel!("Frequency (Hz)")
算法
功能 *czt* 在给定线性调频轮廓[1]上计算Z变换时,使用长度等于2的下一个幂的FFT执行快速卷积。