参考信息源:
http://blog.sina.com.cn/s/blog_6fb8aa0d0102v274.html
http://blog.sina.com.cn/s/blog_5f6bb8060102vji5.html
由于实际信号通常是非定常的,我们只能假设其在10ms的时间段内是定常的,并在此基础上对短的定常信号求PSD或者能谱。窗函数的作用就是将原始的信号分割成一段段可以计算PSD和能谱的短信号,并且保证了周期结构的连续性、避免了能量泄漏(原因解释)。不同的窗函数具有不同的特性(main lobe widths and side lobe amplitudes),应用时根据实际情况需要取舍。
采用了窗函数后,窗口两侧位置的信息就会减少(因为窗函数两端为零值),这就需要滑动窗口的位置来解决,也就是说窗口重叠(overlapping)的作用就是使得对分割后信号的分析更可靠。一般来说,Noverlapping取33%~50%。窗口之间重叠得越多,图像越平滑(blurred);反之则更粗糙(blocky)。
pwelch
pwelch有多种使用方法,详见matlab的help,常用方法如下
[Pxx,f]=pwelch(x,window,noverlap,nfft,fs)
Welch方法是一种修正周期图功率谱密度估计方法,它通过选取的窗口对数据进行加窗处理,先分段求功率谱之后再进行平均。其中窗口的长度N表示每次处理的分段数据长度,Noverlap是指相邻两段数据之间的重叠部分长度。长度越大得到的功率谱分辨率越高(越准确),但方差加大(及功率谱曲线不太平滑);长度越小,结果的方差会变小,但功率谱分辨率较低(估计结果不太准确)。
Welch的方法概括步骤如下
- 将信号分为多段,每段之间可以有overlapping,也可以没有。
- 每一段加窗
- 每一段做谱分析
- 求平均。
pwelch参数
信号分段的确定:由于频域分辨率取决于分段(窗)的长度。每一段时间跨度越大,频域分辨率就越高。如果整个信号不分段,那么频域分辨率最高,但往往噪声也最大。当然分段也是为了考虑噪声的影响。分得段越多,噪声越小。 同时,对于一个信号,有overlapping,显然可以比不overlapping的时候的频域分辨率高。
window: 关于窗函数的选取可以参考此链接,长度选择可以参考公式x_length/fren
noverlap,必须小于所定义的分段长度(窗长)。通常取33%~50%窗长。
NFFT,即FFT数据点的个数,可以变化。但是最大长度不能超过每一段的点数。当然,通常设置NFFT为大于每一段的点数的最小2次幂,这样可以得到最高的频域分辨率。 如果NFFT = 每一段的一半,频域分辨率低一倍。Help里的说明是 the (default) length N of the FFT is the larger of 256 and the next power of 2 greater than the length of the segment.