numpy.bartlett
-
numpy.bartlett(M)[source] -
Возвращает окно Бартлетта.
Окно Бартлетта очень похоже на треугольное окно, за исключением того, что конечные точки равны нулю. Оно часто используется в обработке сигналов для обрезания сигнала без генерации слишком большого пульсации в частотной области.
- Параметры
-
-
Mint -
Количество точек в выходном окне. Если ноль или меньше, возвращается пустой массив.
-
- Возвращает
-
-
outarray -
Треугольное окно, с максимальным значением, нормированным до единицы (значение единица появляется только если количество выборок нечетное), с первыми и последними выборками, равными нулю.
-
См. также
-
blackman, hamming, hanning,kaiser
Примечания
Окно Бартлетта определяется как
Большинство ссылок на окно Бартлетта взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Обратите внимание, что свертка с этим окном дает линейную интерполяцию. Оно также известно как функция аподизации (что означает «удаление ноги», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или сужающая функция. Преобразование Фурье Бартлетта является произведением двух функций sinc. Обратите внимание на отличное обсуждение в Kanasewich.
Список литературы
-
1 -
М.С. Бартлетт, «Периодограмма анализ и непрерывные спектры», Biometrika 37, 1-16, 1950.
-
2 -
Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Издательство университета Альберты, 1975, стр. 109-110.
-
3 -
А.В. Опенгейм и Р.В. Шафер, «Обработка дискретных сигналов во времени», Prentice-Hall, 1999, стр. 468-471.
-
4 -
Википедия, «Функция окна», https://en.wikipedia.org/wiki/Window_function
-
5 -
У.Х. Пресс, Б.П. Фланнери, С.А. Теукольский и У.Т. Веттеринг, «Численные рецепты», Издательство Кембриджского университета, 1986, страница 429.
Примеры
>>> import matplotlib.pyplot as plt >>> np.bartlett(12) array([ 0. , 0.18181818, 0.36363636, 0.54545455, 0.72727273, # may vary 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") Text(0.5, 1.0, 'Bartlett window') >>> plt.ylabel("Amplitude") Text(0, 0.5, 'Amplitude') >>> plt.xlabel("Sample") Text(0.5, 0, 'Sample') >>> plt.show()>>> plt.figure() <Figure size 640x480 with 0 Axes> >>> A = fft(window, 2048) / 25.5 >>> mag = np.abs(fftshift(A)) >>> freq = np.linspace(-0.5, 0.5, len(A)) >>> with np.errstate(divide='ignore', invalid='ignore'): ... 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") Text(0.5, 1.0, 'Frequency response of Bartlett window') >>> plt.ylabel("Magnitude [dB]") Text(0, 0.5, 'Magnitude [dB]') >>> plt.xlabel("Normalized frequency [cycles per sample]") Text(0.5, 0, 'Normalized frequency [cycles per sample]') >>> _ = plt.axis('tight') >>> plt.show()
© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.bartlett.html