numpy.hanning
-
numpy.hanning(M)[source] -
Возвращает окно Ханна.
Окно Ханна — это окно, сформированное с помощью взвешенного косинуса.
Параметры: M : int
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
Возвращает: out : ndarray, форма (M,)
Окно, с максимальным значением, нормированным до единицы (значение один появляется только если
Mнечётно).Примечания
Окно Ханна определяется как
Окно Ханна названо в честь Юлиуса фон Ханна, австрийского метеоролога. Также известен как косинусный колокол. Некоторые авторы предпочитают называть его окном Ханна, чтобы избежать путаницы с очень похожим окном Хамминга.
Большинство ссылок на окно Ханна взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Также известно как функция аподизации (что означает «удаление стопы», т. е. сглаживание разрывов в начале и в конце выборочного сигнала) или функция обрезания.
Ссылки
[R30] Blackman, R.B. и Tukey, J.W., (1958) Измерение спектра мощностей, Dover Publications, Нью-Йорк. [R31] E.R. Kanasewich, «Анализ временных последовательностей в геофизике», The University of Alberta Press, 1975, стр. 106-108. [R32] Википедия, «Функция окна», http://en.wikipedia.org/wiki/Window_function [R33] W.H. Press, B.P. Flannery, S.A. Teukolsky и W.T. Vetterling, «Числовые рецепты», Cambridge University Press, 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. ])Построение окна и его частотной характеристики:
>>> from numpy.fft import fft, fftshift >>> window = np.hanning(51) >>> plt.plot(window) [<matplotlib.lines.Line2D object at 0x...>] >>> plt.title("Hann 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 the Hann 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.hanning.html