整理电脑上的资料,翻到了很早的Smooth算法,想着现在正玩着Python,觉得再拿出来分析下:
一、Smooth算法原理
Smooth算法又叫算术平均值算法,具体算法实现有很多种,其中一种等长算法如下:
有序列XS,长度为N-1,处理完的序列为YS,则
YS[0] = XS[0];
YS[1] = 1/3(XS[0]+XS[1]+XS[2])
......
YS[i] = 1/3(XS[i-1]+XS[i]+XS[i+1])
YS[N-1] = XS[N-1];
二、不同波形的smooth算法的时域表现
考虑到常见的几种波形三角波、锯齿波、正弦波、抽样信号比较有代表性。下文以这几种信号为例进行分析。
(1)三角波和锯齿波。
取样点数为13点的三角波和锯齿波如下:
蓝色为原信号,黄色为平滑滤波后的信号,下同。
取样为31点的滤波图形如下:
对比可以看出,Smooth算法对信号突变抑制较为明显,但如果信号抽样点数不够,则信号畸变较大。另外,按照抽样定理一周期2个到4个点的做法对上文采样的Smooth算法明显裕量不够。
(2)正弦波和抽样信号
取样31点的图形如下:
取样61点图形如下:
结合31点和61点的图样可以清晰看出,取样点数(取样频率和信号本身的频率)对Smooth算法影响较大。抛开取样频率空谈算法没有任何意义。