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

Большинство ссылок на окно Блэкмана происходят из литературы по обработке сигналов, где оно используется в качестве одной из многих оконных функций для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление стопы», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезания. Оно известно как «близко оптимальная» функция обрезания, почти такая же хорошая (по некоторым показателям), как и окно Кайзера.
Ссылки
Блэкман, Р.Б. и Такки, Дж.В., (1958) Измерение спектра мощностей, Издательство Dover, Нью-Йорк.
Оппенгейм, А.В. и Р.В. Шафер. Цифровая обработка сигналов. Верхний Сэдл-Ривер, Нью-Джерси: 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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.blackman.html