numpy.blackman
-
numpy.blackman(M)[source] -
Возвращает окно Блэкмана.
Окно Блэкмана — это обрезание, сформированное с помощью первых трёх членов суммы косинусов. Оно разработано для получения минимального уровня утечки. Оно близко к оптимальному, только немного хуже окна Кайзера.
Параметры: -
M : int -
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
Возвращает: -
out : ndarray -
Окно с максимальным значением, нормализованным к единице (значение единица появляется только если количество выборок нечётное).
Примечания
Окно Блэкмана определяется как
Большинство ссылок на окно Блэкмана взяты из литературы по обработке сигналов, где оно используется в качестве одной из многих оконных функций для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление ноги», то есть сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезания. Известно как «почти оптимальная» функция обрезания, почти такая же хорошая (по некоторым показателям), как окно Кайзера.
Ссылки
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.
Примеры
>>> 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() -
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.blackman.html