![398833d08972d445cb88848440798072.png](https://i-blog.csdnimg.cn/blog_migrate/da540d87f7dd154b5ea15b2b7ededf47.jpeg)
数据预处理中对于数据清洗的时候对于离群值和噪声值的处理是关键的一环。
灵魂歌手水云天:数据预处理小结
上文对于数据预处理做了一个总结,本文关于噪声值的处理提供下面4个函数来学习。
1、smooth(曲线拟合工具箱)
1、smoothts(金融工具箱)(smoothts will be removed in a future release. Use smoothdata instead.)
由于官方将会将smoothts函数用smoothdata函数替换,因此这里详细介绍smoothdata函数的使用。
3、medfilt1(信号处理工具箱)
一、smooth
yy = smooth(y)
yy = smooth(y,span)
yy = smooth(y,method)
yy = smooth(y,span,method)
注意:1、此处span为窗宽,简单理解为用于计算平滑值的数据点数,默认为52、method为平滑方法,具体方法如下:
![9d943d9d0b49097e6804af21670d6b04.png](https://i-blog.csdnimg.cn/blog_migrate/9b37d325e8f6cb3a7e4873e542bbd6c5.jpeg)
smooth函数具体调用格式请参考官网:
Smooth response data - MATLAB smooth - MathWorks 中国
下面使用正弦波和随机生成的噪声波来显示smooth的平滑处理结果
%% 产生加噪正弦波信号,绘制加噪波形图
t = linspace(0,2*pi,500)'; % 产生一个从0到2*pi的向量,长度为500
y = 100*sin(t); % 产生正弦波信号
%% 产生500行1列的服从N(0,152)分布的随机数,作为噪声信号
noise = normrnd(0,15,500,1);
y = y + noise; % 将正弦波信号加入噪声信号
figure;
plot(t,y);
xlabel('t');
ylabel('y = sin(t) + 噪声');
![c0fa903fcb01b67660ad5fd380f0b979.png](https://i-blog.csdnimg.cn/blog_migrate/d48f5ac6dd2ec907d76eee89336620f6.jpeg)
首先使用移动平滑法:
%% 移动平滑法
yy1 = smooth(y,30); % 利用移动平均法对y进行平滑处理
figure;
plot(t,y,'k:');
hold on;
plot(t,yy1,'b','linewidth',3);
xlabel('t');
ylabel('moving');