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

Большинство ссылок на окно Бартлетта взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Обратите внимание, что свертка с этим окном производит линейную интерполяцию. Также оно известно как функция аподизации (что означает «удаление ступни», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функции сужения.
Преобразование Фурье окна Бартлетта является произведением двух функций sinc. Обратите внимание на прекрасное обсуждение в Kanasewich.
Ссылки
[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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.bartlett.html