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

Большинство ссылок на окно Бартлетта взяты из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Обратите внимание, что свёртка с этим окном производит линейную интерполяцию. Оно также известно как функция аподизации (что означает «удаление стопы», т.е. сглаживание разрывов в начале и конце выборочного сигнала) или функция сужения. Преобразование Фурье окна Бартлетта представляет собой произведение двух функций синуса. Обратите внимание на отличную дискуссию в работе Каназевича.
Ссылки
[R11] M.S. Bartlett, “Periodogram Analysis and Continuous Spectra”, Biometrika 37, 1-16, 1950. [R12] E.R. Kanasewich, “Time Sequence Analysis in Geophysics”, The University of Alberta Press, 1975, pp. 109-110. [R13] A.V. Oppenheim and R.W. Schafer, “Discrete-Time Signal Processing”, Prentice-Hall, 1999, pp. 468-471. [R14] Wikipedia, “Window function”, http://en.wikipedia.org/wiki/Window_function [R15] 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()
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.bartlett.html