Spec-Zone.ru › NumPy 2.0

numpy.blackman

numpy.blackman(M)[source]

Возвращает окно Блэкмана.

Окно Блэкмана представляет собой обрезку, образованную с использованием первых трех членов суммы косинусов. Оно разработано для минимальной утечки. Оно близко к оптимальному, лишь немного хуже окна Кайзера.

Параметры:
Mint

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

Возвращаемое значение:
outndarray

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

См. также

bartlett, hamming, hanning, kaiser

Примечания

Окно Блэкмана определяется как

\[w(n) = 0.42 - 0.5 \cos(2\pi n/M) + 0.08 \cos(4\pi n/M)\]

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

Ссылки

Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra, Dover Publications, New York.

Oppenheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999, pp. 468-471.

Примеры

>>> import matplotlib.pyplot as plt
>>> np.blackman(12)
array([-1.38777878e-17,   3.26064346e-02,   1.59903635e-01, # may vary
        4.14397981e-01,   7.36045180e-01,   9.67046769e-01,
        9.67046769e-01,   7.36045180e-01,   4.14397981e-01,
        1.59903635e-01,   3.26064346e-02,  -1.38777878e-17])

Построение окна и частотной характеристики.

import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.blackman(51)
plt.plot(window)
plt.title("Blackman window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()  # doctest: +SKIP
../../_images/numpy-blackman-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 Blackman window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
../../_images/numpy-blackman-1_01_00.png

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

Spec-Zone.ru

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