numpy.hamming
- numpy.hamming(M)[source]
-
Возвращает окно Хэмминга.
Окно Хэмминга — это ступенчатый сигнал, образованный с помощью взвешенного косинуса.
- Параметры
-
- Mint
-
Количество точек в выходном окне. Если значение меньше или равно нулю, возвращается пустой массив.
- Возвращаемое значение
-
- outndarray
-
Окно, где максимальное значение нормировано к единице (значение единица появляется только если число выборок нечётное).
Примечания
Окно Хэмминга определяется как
\[w(n) = 0.54 - 0.46cos\left(\frac{2\pi{n}}{M-1}\right) \qquad 0 \leq n \leq M-1\]Окно Хэмминга названо в честь Р. В. Хэмминга, коллеги Дж. В. Такки, и описано в работе Блэкмана и Такки. Оно было рекомендовано для сглаживания усечённой автоковариационной функции во временной области. Большинство ссылок на окно Хэмминга взято из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление подошвы», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функция сужения.
Ссылки
- 1
-
Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra, Dover Publications, New York.
- 2
-
E.R. Kanasewich, “Time Sequence Analysis in Geophysics”, The University of Alberta Press, 1975, pp. 109-110.
- 3
-
Wikipedia, “Window function”, https://en.wikipedia.org/wiki/Window_function
- 4
-
W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling, “Numerical Recipes”, Cambridge University Press, 1986, page 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.hamming.html