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

Большинство ссылок на окно Бартлетта взяты из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Обратите внимание, что свертка с этим окном даёт линейную интерполяцию. Оно также известно как функция аподизации (что означает «удаление ноги», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезания. Преобразование Фурье Бартлетта является произведением двух функций синуса.
Ссылки
[R11] М.С. Бартлетт, «Периодограмма анализ и непрерывные спектры», Biometrika 37, 1-16, 1950. [R12] Э.Р. Канасевич, «Анализ временных рядов в геофизике», Университет Альберты Press, 1975, стр. 109-110. [R13] А.В. Опенгейм и Р.В. Шафер, «Обработка дискретных сигналов во времени», Prentice-Hall, 1999, стр. 468-471. [R14] Википедия, «Функция окна», http://en.wikipedia.org/wiki/Window_function [R15] У.Х. Пресс, Б.П. Фланнери, С.А. Теукольский и У.Т. Ветерлинг, «Численные рецепты», Cambridge University Press, 1986, страница 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.12.0/reference/generated/numpy.bartlett.html