Spec-Zone.ru › NumPy 1.12

numpy.hanning

numpy.hanning(M) [source]

Возвращает окно Ханна.

Окно Ханна — это обрезной косинусоидальный сигнал.

Параметры:

M : int

Количество точек в выходном окне. Если значение равно или меньше нуля, возвращается пустой массив.

Возвращает:

out : ndarray, форма(M,)

Окно, с максимальным значением, нормированным до единицы (значение единица появляется только если M нечетно).

См. также

bartlett, blackman, hamming, kaiser

Примечания

Окно Ханна определяется как

w(n) = 0.5 - 0.5cos\left(\frac{2\pi{n}}{M-1}\right)
\qquad 0 \leq n \leq M-1

Окно Ханна названо в честь Юлиуса фон Ханна, австрийского метеоролога. Также известно как косинусный сигнал. Некоторые авторы предпочитают называть его окном Ханна, чтобы избежать путаницы с очень похожим окном Хамминга.

Большинство ссылок на окно Ханна взяты из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Также известно как функция аподизации (что означает «удаление ноги», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функцией среза.

Ссылки

[R25] Блэкман, Р.Б. и Туки, Дж.В., (1958) Измерение спектра мощностей, Издательство Dover, Нью-Йорк.
[R26] Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Издательство Университета Альберты, 1975, стр. 106-108.
[R27] Википедия, «Функция окна», http://en.wikipedia.org/wiki/Window_function
[R28] У.Х. Пресс, Б.П. Фланнери, С.А. Теукольский и У.Т. Веттеринг, «Численные рецепты», Издательство Кембриджского университета, 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()

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.hanning.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API