Spec-Zone.ru › NumPy 1.19

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])

Постройте окно и частотную характеристику:

>>> from numpy.fft import fft, fftshift
>>> window = np.blackman(51)
>>> plt.plot(window)
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Blackman window")
Text(0.5, 1.0, 'Blackman window')
>>> plt.ylabel("Amplitude")
Text(0, 0.5, 'Amplitude')
>>> plt.xlabel("Sample")
Text(0.5, 0, 'Sample')
>>> plt.show()
../../_images/numpy-blackman-1_00_00.png
>>> plt.figure()
<Figure size 640x480 with 0 Axes>
>>> 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)
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Frequency response of Blackman window")
Text(0.5, 1.0, 'Frequency response of Blackman window')
>>> plt.ylabel("Magnitude [dB]")
Text(0, 0.5, 'Magnitude [dB]')
>>> plt.xlabel("Normalized frequency [cycles per sample]")
Text(0.5, 0, 'Normalized frequency [cycles per sample]')
>>> _ = plt.axis('tight')
>>> plt.show()
../../_images/numpy-blackman-1_01_00.png

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

Spec-Zone.ru

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