Spec-Zone.ru › NumPy 1.18

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

У. Х. Пресс, Б. П. Фланнери, С. А. Теукольский и У. Т. Ветерлинг, «Численные рецепты», Cambridge University Press, 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.hamming.html

Spec-Zone.ru

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