Документация Engee

enbw

Эквивалентная шумовая полоса.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • bw = enbw(window) — возвращает двустороннюю эквивалентную шумовую полосу bw для окна window с равномерной дискретизацией. Эквивалентная шумовая полоса нормализуется по мощности шума на элемент разрешения по частоте.

  • bw = enbw(window,fs) — возвращает двустороннюю эквивалентную шумовую полосу bw в Гц.

Аргументы

Входные аргументы

# window — вектор окна
вещественный вектор-строка | вещественный вектор-столбец

Details

Равномерно дискретизированный вектор окна, заданный как вектор-строка или вектор-столбец с вещественными элементами.

Типы данных

Float64, Float32

# fs — частота дискретизации
положительный скаляр

Details

Частота дискретизации, заданная как положительный скаляр.

Выходные аргументы

# bw — эквивалентная шумовая полоса
положительный скаляр

Details

Эквивалентная шумовая полоса, возвращаемая в виде положительного скаляра.

Типы данных

Float64, Float32

Примеры

Эквивалентная шумовая полоса окна Хэмминга

Details

Определим эквивалентную шумовую полосу окна Хэмминга длиной 1000 отсчетов.

import EngeeDSP.Functions: enbw, hamming

bw = enbw(hamming(1000))
1.3638074449828943

Эквивалентная шумовая полоса окна с плоской вершиной

Details

Определим эквивалентную шумовую полосу (в Гц) окна с плоской вершиной длиной 10000 отсчетов. Частота дискретизации составляет 44.1 кГц.

import EngeeDSP.Functions: enbw, flattopwin

bw = enbw(flattopwin(10000), 44.1e3)
16.62845617599036

Эквивалентная ширина полосы прямоугольного шума

Details

Определим эквивалентную ширину полосы пропускания прямоугольного шума окна Ханна с 128 отсчетами.

Сгенерируем окно и вычислим его дискретное преобразование Фурье по 2048 частотам. Сдвинем преобразование так, чтобы оно центрировалось на нулевой частоте, и вычислим квадрат его модуля.

import EngeeDSP.Functions: hann, fftshift, fft

lw = 128
win = hann(lw)
lt = 2048
windft = fftshift(fft(win, lt))

ad = abs.(windft).^2
mg = maximum(ad)

Укажем частоту дискретизации 1 кГц. Используем функцию enbw для вычисления эквивалентной шумовой полосы окна и убедимся, что значение соответствует определению.

import EngeeDSP.Functions: enbw

fs = 1000

bw = enbw(win, fs)
11.811023622047246
bdef = sum(win.^2) / sum(win)^2 * fs
11.811023622047246

Построим график квадрата модуля окна. Наложим прямоугольник высотой, равной пику квадрата амплитуды, и шириной, равной эквивалентной шумовой полосе.

freq = range(-fs/2, fs/2 - fs/lt, length=lt)

plot(freq, ad, xlims=(-bw, bw), grid=false)
plot!(bw/2 * [-1, -1, 1, 1], mg * [0, 1, 1, 0], linestyle=:dash)

enbw 1

Убедимся, что площадь прямоугольника имеет ту же полную мощность, что и окно.

using Pkg
Pkg.add("NumericalIntegration")
using NumericalIntegration

Adiff = integrate(freq, ad) - bw * mg
-1.4551915228366852e-11

Повторим вычисление, используя нормализованные частоты. Найдем эквивалентную шумовую полосу окна. Убедимся, что enbw дает то же значение, что и определение.

bw = enbw(win)
1.5118110236220474
bdef = sum(win.^2) / sum(win)^2 * lw
1.5118110236220474

Построим график квадрата модуля окна. Наложим прямоугольник высотой, равной пику квадрата амплитуды, и шириной, равной эквивалентной шумовой полосе.

freqn = range(-1/2, 1/2 - 1/lt, length=lt)

plot(freqn, ad, xlims=(-bw/lw, bw/lw), grid=false)
plot!((bw/2 * [-1, -1, 1, 1]) / lw, mg * [0, 1, 1, 0], linestyle=:dash)

enbw 2

Убедимся, что площадь прямоугольника имеет ту же полную мощность, что и окно.

Adiff = integrate(freqn, ad) - bw * mg / lw
-1.4210854715202004e-14

Дополнительно

Эквивалентная шумовая полоса

Details

Полная мощность, содержащаяся в окне, — это площадь под кривой, образованной квадратом модуля преобразования Фурье окна. Эквивалентная шумовая полоса окна — это ширина прямоугольника, высота которого равна пику квадрата модуля преобразования Фурье, а площадь — полной мощности.

Теорема Парсеваля утверждает, что полная энергия окна из отсчетов равна сумме квадратов модулей отсчетов окна во временной области или интегралу по частоте квадрата модуля преобразования Фурье окна:

Спектр мощности окна имеет пиковую амплитуду при :

Чтобы найти ширину эквивалентного прямоугольника и, следовательно, эквивалентную шумовую полосу, разделите площадь на высоту:

Если задана частота дискретизации , функция enbw возвращает предыдущее выражение, умноженное на :

Для нормализованных частот функция делится на ширину бина, :

См. пример Эквивалентная ширина полосы прямоугольного шума, который для заданного окна

  • сравнивает результат enbw с определением для заданной частоты дискретизации и нормализованных частот;

  • строит график эквивалентной прямоугольной полосы пропускания по спектру амплитуд окна;

  • проверяет, что общая мощность, содержащаяся в окне, совпадает с мощностью, содержащейся в прямоугольнике, высота которого равна квадрату пиковой амплитуды преобразования Фурье окна, а ширина равна эквивалентной шумовой полосе.

Литература

  1. Harris, Fredric J. «On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform.» Proceedings of the IEEE®. Vol. 66, January 1978, pp. 51–83.