Spec-Zone.ru › NumPy 1.20

numpy.hamming

numpy.hamming(M) [source]

Возвращает окно Хамминга.

Окно Хамминга — это обрезка, сформированная с помощью взвешенного косинуса.

Параметры
Mint

Количество точек в выходном окне. Если значение равно или меньше нуля, возвращается пустой массив.

Возвращает
outndarray

Окно, с максимальным значением, нормированным до единицы (значение единицы появляется только если число образцов нечётное).

См. также

bartlett, blackman, hanning, kaiser

Примечания

Окно Хамминга определяется как

w(n) = 0.54 - 0.46cos\left(\frac{2\pi{n}}{M-1}\right)
\qquad 0 \leq n \leq M-1

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

Ссылки

1

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

2

Э.Р. Канасевич, «Анализ временных рядов в геофизике», Издательство Университета Альберты, 1975, стр. 109-110.

3

Википедия, «Функция окна», https://en.wikipedia.org/wiki/Window_function

4

У.Х. Пресс, Б.П. Фланнери, С.А. Теукольский и У.Т. Веттеринг, «Числовые рецепты», Издательство Кембриджского университета, 1986, страница 425.

Примеры

>>> np.hamming(12)
array([ 0.08      ,  0.15302337,  0.34890909,  0.60546483,  0.84123594, # may vary
        0.98136677,  0.98136677,  0.84123594,  0.60546483,  0.34890909,
        0.15302337,  0.08      ])

Построение окна и частотной характеристики:

>>> import matplotlib.pyplot as plt
>>> from numpy.fft import fft, fftshift
>>> window = np.hamming(51)
>>> plt.plot(window)
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Hamming window")
Text(0.5, 1.0, 'Hamming window')
>>> plt.ylabel("Amplitude")
Text(0, 0.5, 'Amplitude')
>>> plt.xlabel("Sample")
Text(0.5, 0, 'Sample')
>>> plt.show()
../../_images/numpy-hamming-1_00_00.png
>>> plt.figure()
<Figure size 640x480 with 0 Axes>
>>> A = fft(window, 2048) / 25.5
>>> mag = np.abs(fftshift(A))
>>> freq = np.linspace(-0.5, 0.5, len(A))
>>> response = 20 * np.log10(mag)
>>> response = np.clip(response, -100, 100)
>>> plt.plot(freq, response)
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Frequency response of Hamming window")
Text(0.5, 1.0, 'Frequency response of Hamming window')
>>> plt.ylabel("Magnitude [dB]")
Text(0, 0.5, 'Magnitude [dB]')
>>> plt.xlabel("Normalized frequency [cycles per sample]")
Text(0.5, 0, 'Normalized frequency [cycles per sample]')
>>> plt.axis('tight')
...
>>> plt.show()
../../_images/numpy-hamming-1_01_00.png

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.hamming.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API