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()
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.bartlett.html