scipy.signal.windows.kaiser¶
- scipy.signal.windows.kaiser(M, beta, sym=True)[源代码]¶
返回Kaiser窗口。
Kaiser窗口是通过使用贝塞尔函数形成的锥形。
- 参数
- M集成
输出窗口中的点数。如果为零或更小,则返回空数组。
- beta浮动
形状参数,确定主瓣宽度和副瓣电平之间的权衡。随着测试版变大,窗口会变小。
- sym布尔值,可选
如果为True(默认值),则生成对称窗口,用于过滤设计。如果为False,则生成周期性窗口,用于频谱分析。
- 退货
- wndarray
最大值归一化为1的窗口(尽管在以下情况下不会显示值1 M 是均匀的,并且 sym 为True)。
注意事项
Kaiser窗口定义为
\[W(N)=I_0\Left(\beta\sqrt{1-\frac{4N^2}{(M-1)^2}}) \右)/I_0(\测试版)\]使用
\[\quad-\frac{M-1}{2}\leq n\leq\frac{M-1}{2},\]哪里 \(I_0\) 是修正的零阶贝塞尔函数。
Kaiser是以Jim Kaiser的名字命名的,他发现了基于贝塞尔函数的DPSS窗口的简单近似。Kaiser窗口非常接近于数字延长球面序列或Slepian窗口,Slepian窗口是将窗口主瓣中的能量相对于总能量最大化的变换。
Kaiser可以通过改变Beta参数来近似其他窗口。(有些文献使用alpha=beta/pi。) [4]
测试版
窗口形状
0
矩形
5
类似于海明
6
类似于汉恩
8.6
类似于一个黑人
14的Beta值可能是一个很好的起点。请注意,随着beta变大,窗口会变小,因此样本数量需要足够大,才能对越来越窄的峰值进行采样,否则将返回NAN。
对Kaiser窗口的大多数参考来自信号处理文献,在该文献中,它被用作许多用于平滑值的窗口函数之一。它也被称为变迹(意思是“去除脚部”,即平滑采样信号开始和结束处的不连续)或锥化函数。
参考文献
- 1
J.F.Kaiser,“数字滤波器”--收录于“用数字计算机进行系统分析”中的CH7,编辑:郭富荣和J.F.Kaiser,第218-285页。约翰·威利父子,纽约,(1966)。
- 2
E.R.Kanasewich,“地球物理中的时间序列分析”,阿尔伯塔大学出版社,1975,第177-178页。
- 3
维基百科,“窗口功能”,https://en.wikipedia.org/wiki/Window_function
- 4
F.J.Harris,“On the Use of Window for Harmonic Analysis with the Display Fourier Transform”,IEEE会议论文集,Vol.66,第1号,第51-83页,1978年1月。 DOI:10.1109/PROC.1978.10837 。
示例
绘制窗口及其频率响应:
>>> from scipy import signal >>> from scipy.fft import fft, fftshift >>> import matplotlib.pyplot as plt
>>> window = signal.windows.kaiser(51, beta=14) >>> plt.plot(window) >>> plt.title(r"Kaiser window ($\beta$=14)") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample")
>>> plt.figure() >>> A = fft(window, 2048) / (len(window)/2.0) >>> freq = np.linspace(-0.5, 0.5, len(A)) >>> response = 20 * np.log10(np.abs(fftshift(A / abs(A).max()))) >>> plt.plot(freq, response) >>> plt.axis([-0.5, 0.5, -120, 0]) >>> plt.title(r"Frequency response of the Kaiser window ($\beta$=14)") >>> plt.ylabel("Normalized magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]")