Spec-Zone.ru › NumPy 1.14

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

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

Ссылки

[R26] Блэкман, Р.Б. и Туки, Дж.В., (1958) Измерение спектра мощности, Dover Publications, Нью-Йорк.
[R27] Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Издательство Университета Альберты, 1975, стр. 109-110.
[R28] Википедия, «Функция окна», http://en.wikipedia.org/wiki/Window_function
[R29] У.Х. Пресс, Б.П. Фланнери, С.А. Теукольский и У.Т. Веттерлинг, «Численные рецепты», Издательство Кембриджского университета, 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      ])

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

>>> 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()
>>> 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()

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

Spec-Zone.ru

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