scipy.signal.windows.

hamming#

scipy.signal.windows.hamming(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.54 - 0.46 \cos\left(\frac{2\pi{n}}{M-1}\right) \qquad 0 \leq n \leq M-1\]

Окно Хэмминга названо в честь Р. В. Хэмминга, коллеги Дж. В. Тьюки, и описано в работе Блэкмана и Тьюки. Оно рекомендовано для сглаживания усечённой автоковариационной функции во временной области. Большинство ссылок на окно Хэмминга происходят из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Также известно как аподизация (что означает «удаление ноги», т.е. сглаживание разрывов в начале и конце дискретизированного сигнала) или сужающая функция.

Ссылки

[1]

Блэкман, Р.Б. и Тьюки, Дж.В., (1958) Измерение спектров мощности, Dover Publications, Нью-Йорк.

[2]

E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The University of Alberta Press, 1975, pp. 109-110.

[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.hamming(51)
>>> plt.plot(window)
>>> plt.title("Hamming 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 = 20 * np.log10(np.abs(fftshift(A / abs(A).max())))
>>> plt.plot(freq, response)
>>> plt.axis([-0.5, 0.5, -120, 0])
>>> plt.title("Frequency response of the Hamming window")
>>> plt.ylabel("Normalized magnitude [dB]")
>>> plt.xlabel("Normalized frequency [cycles per sample]")
../../_images/scipy-signal-windows-hamming-1_00.png
../../_images/scipy-signal-windows-hamming-1_01.png