Spec-Zone.ru › NumPy 2.0

numpy.hanning

numpy.hanning(M)[source]

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

Окно Ханнинга — это обрезной профиль, созданный с использованием взвешенного косинуса.

Параметры:
Mint

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

Возвращает:
outndarray, форма (M,)

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

См. также

bartlett, blackman, hamming, kaiser

Примечания

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

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

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

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

Ссылки

[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)
plt.title("Hann window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()
../../_images/numpy-hanning-1_00_00.png
plt.figure()
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)
plt.title("Frequency response of the Hann window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
../../_images/numpy-hanning-1_01_00.png

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.hanning.html

Spec-Zone.ru

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