Spec-Zone.ru › NumPy 1.16

numpy.hamming

numpy.hamming(M) [source]

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

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

Параметры:
M : int

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

Возвращает:
out : ndarray

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

См. также

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) Измерение спектра мощности, Издательство Довер, Нью-Йорк.
[2] Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Университет Альберты Press, 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,
        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")
<matplotlib.text.Text object at 0x...>
>>> plt.ylabel("Amplitude")
<matplotlib.text.Text object at 0x...>
>>> plt.xlabel("Sample")
<matplotlib.text.Text object at 0x...>
>>> plt.show()
../../_images/numpy-hamming-1_00_00.png
>>> plt.figure()
<matplotlib.figure.Figure object at 0x...>
>>> 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")
<matplotlib.text.Text object at 0x...>
>>> plt.ylabel("Magnitude [dB]")
<matplotlib.text.Text object at 0x...>
>>> plt.xlabel("Normalized frequency [cycles per sample]")
<matplotlib.text.Text object at 0x...>
>>> plt.axis('tight')
(-0.5, 0.5, -100.0, ...)
>>> plt.show()
../../_images/numpy-hamming-1_01_00.png

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

Spec-Zone.ru

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