gausswin
Гауссово окно.
| Библиотека |
|
Аргументы
Входные аргументы
#
L —
длина окна
положительное целое число
Details
Длина окна, заданная как положительное целое число.
Если задать L как нецелое число, функция округлит его до ближайшего целого значения.
|
| Типы данных |
|
#
alpha —
коэффициент ширины
2.5 (по умолчанию) | положительный вещественный скаляр
Details
Коэффициент ширины, заданный как положительный вещественный скаляр. Аргумент alpha обратно пропорционален ширине окна.
| Типы данных |
|
Выходные аргументы
#
w —
гауссово окно
вектор-столбец
Details
Гауссово окно, возвращаемое как вектор-столбец.
Примеры
Гауссово окно
Details
Сформируем гауссово окно с 64 точками. Отобразим результат с помощью plot.
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
Этот пример показывает, что преобразование Фурье гауссова окна также является гауссовым с обратным стандартным отклонением. Это иллюстрирует принцип неопределенности времени и частоты.
Сформируем гауссово окно длиной , используя функцию gausswin и определяющее уравнение. Установим , это даст стандартное отклонение . Гауссово окно, по сути, ограничено средним значением плюс-минус 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)
Получим преобразование Фурье гауссова окна по точкам. Используем функцию fftshift для центрирования преобразования Фурье на нулевой частоте (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)