1.1 数据预处理(平滑) |
您所在的位置:网站首页 › 不属于数据预处理 › 1.1 数据预处理(平滑) |
一.主要内容: 1.数据的平滑处理 2.数据的标准化处理 3.数据的极差归一化变换 4.缺失数据的填充 二.为何要进行预处理? 我们得到的实际数据容易受到噪声的影响,可能存在重复与缺失,也可能存在多种量纲,他们往往是不完美的。因此我们再分析挖掘数据时,首先就要进行预处理。 三.正文部分 1. 数据的平滑处理,主要用到MATLAB的smooth函数。 原理(以yy=smooth(y);举例): yy(1)=y(1) yy(2)=(y(1)+y(2)+y(3))/3 yy(3)=(y(1)+y(2)+y(3)+y(4)+y(5))/5 yy(4)=(y(2)+y(3)+y(4)+y(5)+y(6))/5 … 调用格式如下: yy=smooth(y); %默认窗宽为5,即当前数与前两个后两个的平均 yy=smooth(y,span); %span为制定移动平均滤波器的窗宽,为正奇数 yy=smooth(y,method); %method为平滑的方法,一般有Moving,Lowess,loess,Sgolay,rlowess与rloess yy=smooth(y,span,method); yy=smooth(y,'sgolay',degree); %使用sgolay方法平滑,degree为参数指定多项式模型的阶数,是0到span-1间的正整数 yy=smooth(y,span,'sgolay',degree); yy=smooth(x,y,...);为了方便理解,我举一个通俗易懂的例子: 我们先创造一个加噪音的正弦波信号,再用smooth函数对其处理 t=linspace(0,2*pi,300)'; %产生300个元素的0到2pi的向量 y=80*sin(t); noise=normrnd(0,15,300,1);%噪声信号 y=y+noise;%加噪声的正弦信号 figure; plot(t,y); xlabel('时间t'); ylabel('加噪声的sin函数');运行结果如下:
2. modfilt1函数(一维中值滤波):用于一维信号的处理。例如在动态压力测量时由于电路上的干扰会出现测量值发生突变,为了消除这种突变可以采用一维中值滤波的方法。 调用格式: y = medfilt1(x,n); y = medfilt1(x,n,blksz); y = medfilt1(x,n,blksz,dim);再次举例,接着上文中产生带噪音的正弦信号开始 yy = medfilt1(y,30); % 指定窗宽为30,对y进行中值滤波 figure; % 新建一个图形窗口 plot(t,y,'k:'); % 绘制加噪波形图 hold on % 绘制平滑后曲线图,黑色实线,线宽为3 plot(t,yy,'k','LineWidth',3); xlabel('t'); % 为X轴加标签 ylabel('中值滤波'); % 为Y轴加标签 legend('加噪波形','平滑后波形'); |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |