numpy.hamming
-
numpy.hamming(M)[source] -
Возвращает окно Хэмминга.
Окно Хэмминга — это обрезка, сформированная с использованием взвешенного косинуса.
- Параметры
-
-
Mint -
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
-
- Возвращает
-
-
outndarray -
Окно, с максимальным значением, нормализованным к единице (значение единицы появляется только при нечётном количестве образцов).
-
Примечания
Окно Хэмминга определяется как
Окно Хэмминга названо в честь Р. У. Хэмминга, сотрудника Дж. У. Такки, и описано в книге Блэкмана и Такки. Оно рекомендовалось для сглаживания усечённой автоковариационной функции во временной области. Большинство ссылок на окно Хэмминга взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление ноги», т.е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезки.
Ссылки
-
1 -
Блэкман, Р.Б. и Такки, Дж.У., (1958) Измерение спектра мощностей, Издательство Dover, Нью-Йорк.
-
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()>>> 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()
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.hamming.html