numpy.hanning
-
numpy.hanning(M)[source] -
Возвращает окно Ханна.
Окно Ханна — это окно, сформированное с помощью взвешенного косинуса.
Параметры: -
M : int -
Число точек в выходном окне. Если ноль или меньше, возвращается пустой массив.
Возвращает: -
out : ndarray, shape(M,) -
Окно, с максимальным значением, нормированным до единицы (значение единицы появляется только если
Mнечётное).
Замечания
Окно Ханна определяется как
Окно Ханна названо в честь Юлиуса фон Ханна, австрийского метеоролога. Также известно как косинусный колокол. Некоторые авторы предпочитают называть его окном Ханна, чтобы избежать путаницы с очень похожим окном Хэмминга.
Большинство ссылок на окно Ханна происходят из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Оно также известно как аподизация (что означает «удаление стопы», то есть сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезки.
Ссылки
[1] Blackman, R.B. и Tukey, J.W., (1958) Измерение спектра мощности, Dover Publications, Нью-Йорк. [2] E.R. Kanasewich, «Анализ временных последовательностей в геофизике», Издательство Университета Альберты, 1975, стр. 106-108. [3] Википедия, «Функция окна», http://en.wikipedia.org/wiki/Window_function [4] 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.15.4/reference/generated/numpy.hanning.html