numpy.bartlett
-
numpy.bartlett(M)[source] -
Возвращает окно Бартлетта.
Окно Бартлетта очень похоже на треугольное окно, за исключением того, что конечные точки равны нулю. Оно часто используется в обработке сигналов для обрезания сигнала без генерации слишком большого количества пульсаций в частотной области.
Параметры: -
M : int -
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
Возвращает: -
out : array -
Треугольное окно, где максимальное значение нормировано до единицы (значение единицы появляется только если количество выборок нечетное), с первыми и последними выборками, равными нулю.
Примечания
Окно Бартлетта определяется как
Большинство ссылок на окно Бартлетта взяты из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Обратите внимание, что свертка с этим окном дает линейную интерполяцию. Оно также известно как функция аподизации (что означает «удаление ноги», то есть сглаживание разрывов в начале и конце выборочного сигнала) или функции обрезания. Преобразование Фурье окна Бартлетта является произведением двух функций синус. Обратите внимание на отличное обсуждение в работе Канасевича.
Ссылки
[1] M.S. Bartlett, “Periodogram Analysis and Continuous Spectra”, Biometrika 37, 1-16, 1950. [2] E.R. Kanasewich, “Time Sequence Analysis in Geophysics”, The University of Alberta Press, 1975, pp. 109-110. [3] A.V. Oppenheim and R.W. Schafer, “Discrete-Time Signal Processing”, Prentice-Hall, 1999, pp. 468-471. [4] Wikipedia, “Window function”, https://en.wikipedia.org/wiki/Window_function [5] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling, “Numerical Recipes”, Cambridge University Press, 1986, page 429. Примеры
>>> np.bartlett(12) array([ 0. , 0.18181818, 0.36363636, 0.54545455, 0.72727273, 0.90909091, 0.90909091, 0.72727273, 0.54545455, 0.36363636, 0.18181818, 0. ])Построение окна и его частотной характеристики (требуются SciPy и matplotlib):
>>> from numpy.fft import fft, fftshift >>> window = np.bartlett(51) >>> plt.plot(window) [<matplotlib.lines.Line2D object at 0x...>] >>> plt.title("Bartlett 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 Bartlett 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.16.1/reference/generated/numpy.bartlett.html