hann#
- scipy.signal.windows.hann(M, sym=True, *, xp=None, device=None)[источник]#
Вернуть окно Ханна.
Окно Ханна - это сужение, образованное использованием приподнятого косинуса или синуса в квадрате с концами, касающимися нуля.
- Параметры:
- Mint
Первая строка матрицы. Если None,
- symbool, необязательно
Когда True (по умолчанию), генерирует симметричное окно для использования в проектировании фильтров. Когда False, генерирует периодическое окно для использования в спектральном анализе.
- xparray_namespace, опционально
Опциональное пространство имён массивов. Должно быть совместимо со стандартом array API или поддерживаться array-api-compat. По умолчанию:
numpy- устройство: любое
необязательная спецификация устройства для вывода. Должна соответствовать одной из поддерживаемых спецификаций устройств в
xp.
- Возвращает:
- wndarray
Окно, с максимальным значением, нормализованным до 1 (хотя значение 1 не появляется, если M четно и sym равно True).
Примечания
Окно Ханна определяется как
\[w(n) = 0.5 - 0.5 \cos\left(\frac{2\pi{n}}{M-1}\right) \qquad 0 \leq n \leq M-1\]Окно названо в честь Юлиуса фон Ханна, австрийского метеоролога. Оно также известно как Косинусный колокол. Иногда ошибочно называется окном «Ханнинга», из-за использования «hann» как глагола в оригинальной статье и путаницы с очень похожим окном Хэмминга.
Большинство ссылок на окно Ханна происходят из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Оно также известно как аподизация (что означает «удаление ноги», т.е. сглаживание разрывов в начале и конце дискретизированного сигнала) или сужающая функция.
Ссылки
[1]Блэкман, Р.Б. и Тьюки, Дж.В., (1958) Измерение спектров мощности, Dover Publications, Нью-Йорк.
[2]E.R. Kanasewich, «Time Sequence Analysis in Geophysics», The University of Alberta Press, 1975, стр. 106-108.
[3]Википедия, "Оконная функция", https://en.wikipedia.org/wiki/Window_function
[4]У.Х. Пресс, Б.П. Флэннери, С.А. Тьюколски и У.Т. Веттерлинг, «Численные рецепты», Cambridge University Press, 1986, страница 425.
Примеры
Построить окно и его частотную характеристику:
>>> import numpy as np >>> from scipy import signal >>> from scipy.fft import fft, fftshift >>> import matplotlib.pyplot as plt
>>> window = signal.windows.hann(51) >>> plt.plot(window) >>> plt.title("Hann window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample")
>>> plt.figure() >>> A = fft(window, 2048) / (len(window)/2.0) >>> freq = np.linspace(-0.5, 0.5, len(A)) >>> response = np.abs(fftshift(A / abs(A).max())) >>> response = 20 * np.log10(np.maximum(response, 1e-10)) >>> plt.plot(freq, response) >>> plt.axis([-0.5, 0.5, -120, 0]) >>> plt.title("Frequency response of the Hann window") >>> plt.ylabel("Normalized magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]")