sg 数据平滑 (多项式平滑)
对于噪声比较多的数据通常需要先将数据平滑处理来去噪
比如,有一组含有噪声的数据如下图,使用sg()函数可以将数据进行多项式平滑处理
A |
|
1 |
=file("sgdata.xlsx").xlsimport@w() |
2 |
=A1.(~(1)) |
3 |
=A1.(~(2)) |
4 |
=sg(A3,1,15).conj() |
5 |
=canvas() |
6 |
=A5.plot("NumericAxis","name":"x") |
7 |
=A5.plot("NumericAxis","name":"y","location":2) |
8 |
=A5.plot("Line","markerStyle":0,"axis1":"x","data1":A2,"axis2":"y", "data2":A3) |
9 |
=A5.plot("Line","markerStyle":0,"lineColor":-65536,"axis1":"x","data1":A2,"axis2":"y", "data2":A4) |
10 |
=A5.draw@p(600,600) |
A1将数据读成二级序列
A2 数据序号
A3 原始数据
A4 对A3数据进行15 点 1 次平滑(n=1,m=15),返回平滑后数据,如图中红线。sg(A,n,m,d)中,参数d 省略时不求导表示仅平滑;d=1,表示求一阶导数平滑结果,可消除常数项误差;d=2二阶导数平滑,可消除一次项误差
A5-A10 将平滑前后数据画图,观察平滑效果。如效果不理想,可调整n、m、d 的值,直至理想。