cupyx.scipy.signal.windows.bartlett#
- cupyx.scipy.signal.windows.bartlett(M, sym=True)[源码]#
返回一个 Bartlett 窗口。
Bartlett 窗口与三角窗口非常相似,只是端点为零。它常用于信号处理中对信号进行渐缩(tapering),而不会在频域中产生太多波纹。
- 参数:
- 返回:
w – 三角窗口,其第一个和最后一个样本为零,最大值归一化为 1(尽管如果 M 是偶数且 sym 是 True,则值 1 不会出现)。
- 返回类型:
另请参阅
triang
一个端点不为零的三角窗口
注意
Bartlett 窗口的定义为
\[w(n) = \frac{2}{M-1} \left( \frac{M-1}{2} - \left|n - \frac{M-1}{2}\right| \right)\]Bartlett 窗口的大多数引用来自信号处理文献,其中它被用作许多窗口函数之一来平滑值。请注意,与此窗口的卷积会产生线性插值。它也被称为消尾(apodization,意为“去除尾部”,即平滑采样信号开头和结尾处的不连续性)或渐缩函数(tapering function)。Bartlett 窗口的傅里叶变换是两个 sinc 函数的乘积。请注意 Kanasewich 文献中的精彩讨论。[2]
更多信息请参阅 [1], [2], [3], [4] 和 [5]
参考文献
示例
绘制窗口及其频率响应
>>> import cupyx.scipy.signal.windows >>> import cupy as cp >>> from cupy.fft import fft, fftshift >>> import matplotlib.pyplot as plt
>>> window = cupyx.scipy.signal.windows.bartlett(51) >>> plt.plot(cupy.asnumpy(window)) >>> plt.title("Bartlett window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample")
>>> plt.figure() >>> A = fft(window, 2048) / (len(window)/2.0) >>> freq = cupy.linspace(-0.5, 0.5, len(A)) >>> response = 20 * cupy.log10(cupy.abs(fftshift(A / cupy.abs(A).max()))) >>> plt.plot(cupy.asnumpy(freq), cupy.asnumpy(response)) >>> plt.axis([-0.5, 0.5, -120, 0]) >>> plt.title("Frequency response of the Bartlett window") >>> plt.ylabel("Normalized magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]")