numpy.blackman
-
numpy.blackman(M)[source] -
Возвращает окно Блэкмана.
Окно Блэкмана — это обрезной элемент, сформированный с использованием первых трёх членов суммирования косинусов. Оно разработано для минимизации утечек. Оно близко к оптимальному, лишь немного хуже окна Кайзера.
Параметры: M : int
Число точек в выходном окне. Если ноль или меньше, возвращается пустой массив.
Возвращает: out : ndarray
Окно, с максимальным значением, нормированным до единицы (значение единицы появляется только в случае нечётного числа выборок).
Примечания
Окно Блэкмана определяется как

Большинство ссылок на окно Блэкмана взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление стопы», т.е. сглаживание разрывов в начале и конце выборки сигнала) или обрезки. Оно известно как «близко к оптимальная» функция обрезки, практически так же хороша (по некоторым показателям) как окно Кайзера.
Справочные материалы
Блэкман, Р.Б. и Тьюки, Дж.В., (1958) Измерение спектра мощностей, Dover Publications, Нью-Йорк.
Оппенгейм, А.В., и Р.В. Шафер. Обработка дискретных сигналов во времени. Верхний Седл-Ривер, Н.Д.: Prentice-Hall, 1999, с. 468-471.
Примеры
>>> np.blackman(12) array([ -1.38777878e-17, 3.26064346e-02, 1.59903635e-01, 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") <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 Blackman 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.13.0/reference/generated/numpy.blackman.html