作者:ShownSun
工作室:时沿科技
滑窗算法笔记
平滑算法
m:平滑宽度(通常为奇数);
n:信号中点的总数;
降噪
D:原始信号中噪声的标准差,第一次滑窗后噪声的标准差D/sqrt(m),阶跃响应时间等于平滑宽度除以采样率,三次滑窗后噪声的标准差Dx0.7/sqrt(m);第一次三角平滑后噪声的标准差Dx0.8/sqrt(m);
一个m宽度的平滑n次会得到一个合并的平滑宽度n*m-n+1;多次平滑处理会更有效地衰减掉高频噪声,但会减缓步进响应;
Savitzky-Golay平滑基于多项式对数据段的最小二乘拟合;对比相同m宽度滑窗平滑,Savitzky-Golay平滑在减小噪声方面不是很有效,但是更有效的保持原始信号形状,另外计算时间较长和占用内存比较多;
噪声的频率分布
对于不同噪声降噪效果,原始信号的噪声的标准差为1;
Original unsmoothed noise | 1 |
---|---|
Smoothed white noise | 0.1 |
Smoothed pink noise | 0.55 |
Smoothed blue noise | 0.01 |
Smoothed red (random walk) noise | 0.98 |
结尾效果和丢失点问题
一般来说,m宽度的平滑窗口,在开始处会有(m-1)/2个点,在信号结束处也会有(m-1)/2个点,无法计算出完整的m宽度的平滑。有两种方法解决:
一种是接受点数的丢失,将这些点修剪掉或者在平滑过程中使用0代替;
一种是在信号的末端逐步使用更小的平滑。
平滑宽度越大,降噪效果越好,同时信号被平滑操作扭曲的可能性也越大。平滑宽度的最佳选择取决于信号的宽度和形状以及数字化间隔。对于峰值信号,关键因素是平滑比,即平滑宽度m与峰半宽度点数之比。
一般而言,增加平滑比可以改善信噪比,但会导致峰值振幅的降低和带宽的增加。由于平滑比增加,窄峰的峰值畸变效用(峰高降低和峰宽增加)更大。如果保持峰值的形状比优化信噪比更重要,那么Savitzky-Golay比滑动平均平滑更有优势。
平滑问题
平滑确实使信号更平滑,也确实降低了噪声的标准偏差,但这是否有助于更好的测量取决于具体情况。不要仅仅因为一点平滑就认为越多越好。
优化平滑
随着平滑宽度的增加,平滑比增加,噪声先减小的快,再减小的慢,峰高也减小,先减小的慢,再减小的快,峰高也减小,先减小的慢,再减小的快。噪声的降低取决于平滑宽度、平滑类型和噪声颜色,但峰高的降低也取决于峰宽。结果是,信噪比(噪声标准差的峰值高度,峰值高度/噪声标准差)先迅速增大,然后达到最大值。
最好的平滑比,取决于测量峰值的目的。如果最终目的是测量峰高或峰宽,应使用低于0.2的平滑比,最好使用Savitzky-Golay平滑。如果测量的是目的是测量峰值的位置,那么可以使用更大的平滑比。最佳的信噪比对应的是一个明显扭曲峰值的平滑比,这就是为什么曲线拟合未经平滑的数据通常是测量峰值位置、高度和宽度的首选方法。峰面积不会因为平滑而改变,除非它改变了对峰开始和结束的估计。
使用平滑的原因
1. 视觉需求;
2. 存在高频噪声(蓝色),但不影响低频信号位置高度宽度等;
3. 后期需要分析处理,例如测量拐点等(未经平滑数据最好使用最小二乘法进行分析);
什么时候不应该平滑信号
1. 平滑不会显著提高参数测量的准确性(由最小二乘法测量);
2. 平滑算法有所折损,涉及部分信号的形状和幅值的变化;
3. 平滑信号会严重低估误差的代数传播计算;
处理峰值和异常值
窄的尖峰和异常值,使用中间过滤器取代信号周围m相邻点,可以完全消除狭窄的尖峰。使用killspike.m在信号点尖峰前后进行线性插值进行修补来定位和消除尖峰。
替代平滑的方法
计算信号的平均值,但是应用于重复信号的噪声,最大的优点就是所有频率上噪声都降低了,而不仅仅是平滑高频噪声(用于信号或者基线漂移)。
压缩过量采集的信号
每n个点取平均作为采样值,类似于平滑处理。