numpy.hanning
-
numpy.hanning(M)[source] -
Возвращает окно Ханнинга.
Окно Ханнинга — это обрезка, сформированная с использованием взвешенного косинуса.
- Параметры
-
-
Mint -
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
-
- Возвращает
-
-
outndarray, shape(M,) -
Окно, с максимальным значением, нормированным до единицы (значение единица появляется только если
Mнечетно).
-
См. также
-
bartlett, blackman, hamming,kaiser
Примечания
Окно Ханнинга определяется как
Окно Ханнинга названо в честь Юлиуса фон Ханнинга, австрийского метеоролога. Также оно известно как косинусный колокол. Некоторые авторы предпочитают называть его окном Ханна, чтобы избежать путаницы с очень похожим окном Хамминга.
Большинство ссылок на окно Ханнинга взяты из литературы по обработке сигналов, где оно используется в качестве одной из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление ноги», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезки.
Ссылки
-
1 -
Блэкман, Р.Б. и Такки, Дж.В. (1958) Измерение спектра мощностей, Dover Publications, Нью-Йорк.
-
2 -
Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Издательство Университета Альберты, 1975, стр. 106-108.
-
3 -
Википедия, «Функция окна», https://en.wikipedia.org/wiki/Window_function
-
4 -
У.Х. Пресс, Б.П. Фланнери, С.А. Теукольский и У.Т. Веттеринг, «Численные рецепты», Издательство Кембриджского университета, 1986, страница 425.
Примеры
>>> np.hanning(12) array([0. , 0.07937323, 0.29229249, 0.57115742, 0.82743037, 0.97974649, 0.97974649, 0.82743037, 0.57115742, 0.29229249, 0.07937323, 0. ])Постройте окно и его частотную характеристику:
>>> import matplotlib.pyplot as plt >>> from numpy.fft import fft, fftshift >>> window = np.hanning(51) >>> plt.plot(window) [<matplotlib.lines.Line2D object at 0x...>] >>> plt.title("Hann window") Text(0.5, 1.0, 'Hann 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)) >>> with np.errstate(divide='ignore', invalid='ignore'): ... 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 the Hann window") Text(0.5, 1.0, 'Frequency response of the Hann 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.hanning.html