完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx

上传人:b****2 文档编号:2082376 上传时间:2022-10-26 格式:DOCX 页数:14 大小:181.45KB
下载 相关 举报
完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx_第1页
第1页 / 共14页
完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx_第2页
第2页 / 共14页
完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx_第3页
第3页 / 共14页
完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx_第4页
第4页 / 共14页
完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx

《完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx》由会员分享,可在线阅读,更多相关《完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx(14页珍藏版)》请在冰豆网上搜索。

完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理.docx

完整版Matlab学习系列012数据预处理1剔除异常值及平滑处理

012.数据预处理

(1)――剔除异常值及平滑处理

测量数据在其采集与传输过程中,由于环境干扰或人为因素有可能造成个别数据不切合实际或丢失,这种数据称为异常值。

为了恢复数据的客观真实性以便将来得到更好的分析结果,有必要先对原始数据

(1)剔除异常值;

另外,无论是人工观测的数据还是由数据采集系统获取的数据,都不可避免叠加上“噪声”干扰(反映在曲线图形上就是一些“毛刺和尖峰”)。

为了提高数据的质量,必须对数据进行

(2)平滑处理(去噪声干扰);

(一)剔除异常值。

注:

若是有空缺值,或导入Matlab数据显示为“NaN”(非数),需要①忽略整条空缺值数据,或者②填上空缺值。

填空缺值的方法,通常有两种:

A.使用样本平均值填充;B.使用判定树或贝叶斯分类等方法推导最可能的值填充(略)。

一、基本思想:

规定一个置信水平,确定一个置信限度,凡是超过该限度的误差,就认为它是异常值,从而予以剔除

二、常用方法:

拉依达方法、肖维勒方法、一阶差分法。

注意:

这些方法都是假设数据依正态分布为前提的。

1.拉依达方法(非等置信概率)

如果某测量值与平均值之差大于标准偏差的三倍,则予以剔除。

XX3Sx

nn2

其中,X-xi为样本均值,Sx亠(xX)2为样本的标准偏nJxn1i/"

差。

注:

适合大样本数据,建议测量次数》50次。

代码实例(略)。

2.肖维勒方法(等置信概率)

在n次测量结果中,如果某误差可能出现的次数小于半次时,

就予以剔除。

这实质上是规定了置信概率为1-1/2n,根据这一置信概率,可计

算出肖维勒系数,也可从表中查出,当要求不很严格时,还可按下列

近似公式计算:

10.41n(n)

Tabl.肖维勒系数表

n

3

4

5

6

7

8

9

10

11

12

GJn

1.38

1.53

1.65

1.73

1.80

1.86

1.92

1.96

2.00

2.03

n

13

14

15

20

30

40

50

100

200

500

GJn

2.07

2.10

2.13

2.24

2.39

2.49

2.58

2.81

3.02

3.20

如果某测量值与平均值之差的绝对值大于标准偏差与肖维勒系

数之积,则该测量值被剔除

Sx

例1.利用肖维勒方法对下列数据的异常值(2.5000)进行剔除:

1.50341.50621.50341.50241.49852.50001.5007

1.50671.49931.4969

上述数据保存于文件erro.dat

代码:

x=load('error.dat');

n=length(x);

subplot(2,1,1);

plot(x,'o');

title('原始数据')

axis([0,n+1,min(x)-1,max(x)+1]);w=1+0.4*log(n);

yichang=abs(x-mean(x))>w*std(x);

%若用拉依达方法,把w改成3即可,但本组数据将不能成功剔除异常值。

x(yichang)=[];

saveerrornew.datx-ASCIIsubplot(2,1,2);

plot(x,'rs');

title('异常值剔除后数据');

axis([0,n+1,min(x)-1,max(x)+1]);

运行结果:

x=

1.5024

1.4985

2.5000

1.5007

1.5024

1.4985

1.5007

1.5067

1.50341.50621.5034

1.50671.49931.4969

y=

1.50341.50621.5034

1.49931.4969

原始数据

3.5Iiiir~

2.5-c

1.5-oo□ouooo

I-

[匚LiiIii_

‘0246810

3.一阶差分法(预估比较法)

用前两个测量值来预估新的测量值,然后用预估值与实际测量值

比较,若大于事先给定的允许差限值,则剔除该测量值

预估值

xnXn1(Xn1Xn2)

比较判别:

Xn?

nW

注:

该方法的特点是

(1)适合于实时数据采集与处理过程;

(2)精度除了与允许误差限的大小有关外,还与前两点测量值的

精确度有关;

(3)若被测物理量的变化规律不是单调递增或单调递减函数,这

一方法将在函数的拐点处产生较大的误差,严重时将无法使用。

(二)数据的平滑处理

对于一组测量数据(xi,yi)i=1,…”n不要直接就想着求出的拟合多项式的线性参数,而是要先平滑处理去掉“噪声”。

平滑处理在科学研究中广泛使用,它可以减少测量中统计误差带来的影响,尤其

被用于无法利用多次重复测量来得到其平均值的情况和当yi随xi

有徒然变化的那些测量段。

1.(2n+1点)单纯移动平均”平滑滤波

取出以yi为中心的前后各n个数据(yi-n,…,y-1,yi,…yi+n求

平均值代替yi,即

优点:

方法简单,计算方便。

缺点:

方法产生误差会造成信号失真;前后各n个数据无法平滑。

适用性:

适用于变化缓慢的数据。

注:

n越大平滑效果越好,但失真也越大。

例2.“9点单纯移动平均”平滑滤波

代码:

%建立“n点单纯移动平均”的滤波函数

%注意函数要单独保存为与函数名同名的.m文件

functionY=smooth_data(y,n)

m=length(y);

j=1;

fori=(n-1)/2+1:

(m-(n-1)/2)

p=i-(n-1)/2;

q=i+(n-1)/2;

Y(j)=sum(y(p:

q))/n;

j=j+1;

end

end

%主程序

clc

clear

t=-15:

0.5:

15;

n=length(t);

Y=5./(1+t.A2);%原始测试数据

y=Y+(0.5-rand(1,n));%给测试数据加上噪声干扰plot(1:

n,Y,1:

n,y,'-o',5:

n-4,y1,'-*');

legend('无噪声','含噪声','9点平滑后');

运行结果:

4JII||JI

'010203040506070

2.“加权移动平均”平滑滤波

加权的基本思想:

作平均的区间内中心处数据的权值最大,愈远离中心处的数据权值越小小。

这样就减小了对真实信号本身的平滑作用。

权重系数可以采用最小二乘原理,使平滑后的数据以最小均方差逼近原始数据。

即令

'2

min(y,kyik)

k

2

(yik

k2

2

(yik

k2

2

(%k

AAkAk2)0

A0AkA>k2)k0

A0AkA,k2)k20

归一系数

y-2

y-1

yo

y1

y2

y-2‘

35

31

9

-3

-5

3

y-1'

35

9

13

12

6

-5

yo'

35

-3

12

17

12

-3

y1'

35

-5

6

12

13

9

y2‘

35

3

-5

-3

9

31

k2

五点二次平滑权重系数表:

yo

1

35

3y2I2yi

17yo12yi3y2

3.用“smooth函数”平滑滤波

调用格式:

Z=smooth(Yspan,method)

说明:

乙平滑后的数据向量

Y:

被平滑的数据向量

span:

平滑点数,缺省为5点

method:

平滑方法,缺省为移动平滑,其它还有

‘moving'Movingaverage(default)单纯移动平均

‘lowess'Lowess(linearfit)线性加权平滑

‘loess'Loess(quadraticfit二次加权平滑

'sgolay'Savitzky-Golay

'rlowess'RobustLowess(linearfit)

'rloess'RobustLoess(quadraticfit)

例3.用matlab自带的平滑函数作平滑滤波实例。

代码:

t=-10:

0.5:

10;

n=length(t);

y=5./(1+t.A2);%原始测试数据

y1=y+0.5*(0.5-rand(1,n));%给测试数据加上噪声干扰

%调用多个滤波函数作滤波处理

y2=smooth(y1,3);y3=smooth(y1,9);

y4=smooth(y1,3,'lowess');y5=smooth(y1,9,'lowess');

y6=smooth(y1,3,'loess');y7=smooth(y1,9,'loess');

y8=smooth(y1,3,'rloess');y9=smooth(y1,9,'rloess');

figure

(1);%第一张图

subplot(3,2,1);

plot(t,y);axis([-1010-16]);gridon

title('无噪声信号');

subplot(3,2,2);

plot(t,y1,'-*');axis([-1010-16]);gridon

title('含噪声信号');subplot(3,2,3);

plot(t,y2,'-*');axis([-1010-16]);gridontitle('3点单纯移动平均');

subplot(3,2,4);

plot(t,y3,'-*');axis([-1010-16]);gridontitle('9点单纯移动平均');

subplot(3,2,5);

plot(t,y4,'-*');axis([-1010-16]);gridontitle('3点线性加权平滑');

subplot(3,2,6);

plot(t,y5,'-*');axis([-1010-16]);gridontitle('9点线性加权平滑');

figure

(2);%第二张图

subplot(3,2,1);

plot(t,y);axis([-1010-16]);gridontitle('无噪声信号');

subplot(3,2,2);

plot(t,y1,'-*');axis([-1010-16]);gridontitle('含噪声信号');

subplot(3,2,3);

plot(t,y6,'-*');axis([-1010-16]);gridontitle('3点二次加权平滑');

subplot(3,2,4);

plot(t,y7,'-*');axis([-1010-16]);gridontitle('9点二次加权平滑');

subplot(3,2,5);

plot(t,y8,'-*');axis([-1010-16]);gridontitle('3点rloess平滑');

subplot(3,2,6);

plot(t,y9,'-*');axis([-1010-1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1