高斯温
的高斯窗口。
库::`工程师`
例子:
高斯窗口
Details
让我们形成一个高斯窗口 64 点。 让我们使用显示结果 情节.
import EngeeDSP.Functions: gausswin
using Plots
L = 64
w = gausswin(L)
plot(w,
title = "Time domain",
xlabel = "Samples",
ylabel = "Amplitude",
linewidth = 2,
color = :blue,
grid = true)
import EngeeDSP.Functions: gausswin, fft, fftshift
using Plots
L = 64
w = gausswin(L)
N_fft = 1024
window_fft = fft([w; zeros(N_fft - L)])
freq_response = 20 * log10.(abs.(fftshift(window_fft)) .+ eps())
freq_axis = range(-π, π, length=N_fft)
plot(freq_axis, freq_response,
title = "Frequency domain",
xlabel = "Normalized Frequency (×π rad/sample)",
ylabel = "Magnitude (dB)",
xlims = (0, π),
ylims = (-80, 40),
linewidth = 2,
color = :blue,
grid = true)
高斯窗口和傅立叶变换
Details
这个例子表明,高斯窗口的傅立叶变换也是一个具有反标准差的高斯。 这说明了时间和频率的不确定性原理。
让我们形成一个长度的高斯窗口 使用函数 高斯温 和定义方程。 安装/安装 ,这将给出标准偏差 . 高斯窗口实际上受正负平均值的限制 3 标准偏差,或近似载波 [-12,12].
import EngeeDSP.Functions: gausswin
using Plots
N = 64
n = range(-(N-1)/2, (N-1)/2, length=N)
alpha = 8
w = exp.(-(0.5) * (alpha * n ./ ((N-1)/2)).^2)
stdev = (N-1)/(2*alpha)
y = exp.(-1/2 * (n/stdev).^2)
plot(n, w, label="gausswin", linewidth=2)
plot!(n, y, label="Definition", markershape=:circle, markersize=4, linealpha=0)
xlabel!("Samples")
title!("Gaussian Window, N = $N")
plot!(legend=true)
我们通过以下方式获得高斯窗口的傅立叶变换 分。 使用函数 fft变换器 以将傅立叶变换居中于零频率(DC)。
import EngeeDSP.Functions: fft, fftshift
nfft = 4*N
freq = range(-π, π - π/nfft, length=nfft)
wdft = fftshift(fft(w, nfft))
高斯窗口的傅立叶变换也是高斯的,其标准偏差在时域上是标准偏差的倒数。 在计算中考虑高斯归一化因子。
ydft = exp.(-1/2*(freq/(1/stdev)).^2) * (stdev * sqrt(2*π))
plot(freq/π, abs.(wdft), label="fft", linewidth=2)
plot!(freq/π, abs.(ydft), label="Definition", markershape=:circle, markersize=4, linealpha=0)
xlabel!("Normalized frequency (×π rad/sample)")
title!("Fourier Transform of Gaussian Window")
plot!(legend=true)