check_NOLA#
- scipy.signal.check_NOLA(window, nperseg, noverlap, tol=1e-10)[источник]#
Проверить, выполняется ли ограничение Nonzero Overlap Add (NOLA).
- Параметры:
- windowstr или tuple или array_like
Желаемое окно для использования. Если window является строкой или кортежем, он передаётся в
get_windowдля генерации значений окна, которые по умолчанию являются DFT-чётными. См.get_windowдля списка окон и требуемых параметров. Если window если это array_like, он будет использоваться напрямую как окно, и его длина должна быть nperseg.- npersegint
Длина каждого сегмента.
- noverlapint
Количество точек для перекрытия между сегментами.
- tolfloat, опционально
Допустимая дисперсия взвешенной суммы бина от медианной суммы бина.
- Возвращает:
- вердиктbool
True если выбранная комбинация удовлетворяет ограничению NOLA в пределах tol, False в противном случае
Смотрите также
check_COLAПроверить, выполняется ли ограничение Constant OverLap Add (COLA)
stftКратковременное преобразование Фурье
istftОбратное коротковременное преобразование Фурье
Примечания
Чтобы включить инверсию STFT через обратное STFT в
istft, оконная обработка сигнала должна удовлетворять условию «ненулевого перекрытия с суммированием» (NOLA):\[\sum_{t}w^{2}[n-tH] \ne 0\]для всех \(n\), где \(w\) является оконной функцией, \(t\) является индексом фрейма, и \(H\) это размер шага (\(H\) = nperseg - noverlap).
Это гарантирует, что нормировочные коэффициенты в знаменателе уравнения инверсии с перекрытием и суммированием не равны нулю. Только очень патологические окна не удовлетворяют ограничению NOLA.
Добавлено в версии 1.2.0.
Ссылки
[1]Джулиус О. Смит III, «Спектральная обработка аудиосигналов», W3K Publishing, 2011, ISBN 978-0-9745607-3-1.
[2]Г. Хайнцель, А. Рюдигер и Р. Шиллинг, «Оценка спектра и спектральной плотности с помощью дискретного преобразования Фурье (DFT), включая полный список оконных функций и некоторые новые окна at-top», 2002, http://hdl.handle.net/11858/00-001M-0000-0013-557A-5
Примеры
>>> import numpy as np >>> from scipy import signal
Подтвердить условие NOLA для прямоугольного окна с перекрытием 75% (3/4):
>>> signal.check_NOLA(signal.windows.boxcar(100), 100, 75) True
NOLA также верно для 25% (1/4) перекрытия:
>>> signal.check_NOLA(signal.windows.boxcar(100), 100, 25) True
«Симметричное» окно Ханна (для проектирования фильтров) также является NOLA:
>>> signal.check_NOLA(signal.windows.hann(120, sym=True), 120, 60) True
Пока есть перекрытие, требуется довольно патологическое окно, чтобы нарушить NOLA:
>>> w = np.ones(64, dtype="float") >>> w[::2] = 0 >>> signal.check_NOLA(w, 64, 32) False
Если перекрытия недостаточно, окно с нулями на концах не сработает:
>>> signal.check_NOLA(signal.windows.hann(64), 64, 0) False >>> signal.check_NOLA(signal.windows.hann(64), 64, 1) False >>> signal.check_NOLA(signal.windows.hann(64), 64, 2) True