Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx

上传人:b****2 文档编号:284486 上传时间:2023-04-28 格式:DOCX 页数:15 大小:130.50KB
下载 相关 举报
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第1页
第1页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第2页
第2页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第3页
第3页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第4页
第4页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第5页
第5页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第6页
第6页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第7页
第7页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第8页
第8页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第9页
第9页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第10页
第10页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第11页
第11页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第12页
第12页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第13页
第13页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第14页
第14页 / 共15页
Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx

《Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx》由会员分享,可在线阅读,更多相关《Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

Matlab学习系列012大数据预处理1剔除异常值及平滑处理文档格式.docx

7

8

9

10

11

12

ωn

1.38

1.53

1.65

1.73

1.80

1.86

1.92

1.96

2.00

2.03

13

14

15

20

30

40

50

100

200

500

2.07

2.10

2.13

2.24

2.39

2.49

2.58

2.81

3.02

3.20

如果某测量值与平均值之差的绝对值大于标准偏差与肖维勒系数之积,则该测量值被剔除。

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

1.50341.50621.50341.50241.49852.50001.50071.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-ASCII

subplot(2,1,2);

rs'

异常值剔除后数据'

运行结果:

x=

y=

1.50341.50621.50341.50241.49851.50071.50671.49931.4969

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

用前两个测量值来预估新的测量值,然后用预估值与实际测量值比较,若大于事先给定的允许差限值,则剔除该测量值。

预估值

比较判别:

该方法的特点是

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

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

(3)若被测物理量的变化规律不是单调递增或单调递减函数,这一方法将在函数的拐点处产生较大的误差,严重时将无法使用。

(二)数据的平滑处理

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

平滑处理在科学研究中广泛使用,它可以减少测量中统计误差带来的影响,尤其被用于无法利用多次重复测量来得到其平均值的情况和当yi随xi有徒然变化的那些测量段。

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

取出以yi为中心的前后各n个数据(yi-n,…,yi-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

%主程序

clc

clear

t=-15:

0.5:

15;

n=length(t);

Y=5./(1+t.^2);

%原始测试数据

y=Y+(0.5-rand(1,n));

%给测试数据加上噪声干扰

y1=smooth_data(y,9);

%调用函数作9点滤波处理

plot(1:

n,Y,1:

n,y,'

-o'

5:

n-4,y1,'

-*'

legend('

无噪声'

'

含噪声'

9点平滑后'

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

加权的基本思想:

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

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

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

即令

通常采用“五点二次平滑”(n=5,k=-2,-1,0,1,2)

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

归一系数

y-2

y-1

y0

y1

y2

y-2’

35

31

-3

-5

y-1’

y0’

17

y1’

y2’

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

调用格式:

Z=smooth(Y,span,method)

说明:

Z:

平滑后的数据向量

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:

10;

y=5./(1+t.^2);

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,'

y6=smooth(y1,3,'

loess'

y7=smooth(y1,9,'

y8=smooth(y1,3,'

y9=smooth(y1,9,'

figure

(1);

%第一图

subplot(3,2,1);

plot(t,y);

axis([-1010-16]);

gridon

无噪声信号'

subplot(3,2,2);

plot(t,y1,'

含噪声信号'

subplot(3,2,3);

plot(t,y2,'

3点单纯移动平均'

subplot(3,2,4);

plot(t,y3,'

9点单纯移动平均'

subplot(3,2,5);

plot(t,y4,'

3点线性加权平滑'

subplot(3,2,6);

plot(t,y5,'

9点线性加权平滑'

figure

(2);

%第二图

plot(t,y6,'

3点二次加权平滑'

plot(t,y7,'

9点二次加权平滑'

plot(t,y8,'

3点rloess平滑'

plot(t,y9,'

9点rloess平滑'

Figure1

Figure2

4.用“smoothts函数”(盒子法、高斯窗法、指数法)平滑滤波

output=smoothts(input)

output=smoothts(input,‘b’,wsize)%盒子法

output=smoothts(input,‘g’,wsize,stdev)%高斯窗方法

output=smoothts(input,‘e’,n)%指数法

例4.读取股市数据,对开盘价的240条数据,调用smoothts函数进行平滑处理。

x=xlsread('

D:

\ProgramFiles\MATLAB\MyWorks\gupiaoshuju01.xls'

%读取数据文件

p0=x(1:

240,1)'

;

%用开盘价所在列的前240条数据

%注意若不转置可能导致后面处理结果异常

subplot(2,2,1);

plot(p0,'

k'

LineWidth'

1.5);

%绘制平滑后曲线图,黑色实线,线宽1.5

xlabel('

观测序号'

ylabel('

股市日开盘价'

axis([025010001400]);

p1=smoothts(p0,'

b'

30);

%用盒子法平滑数据,窗宽为30

subplot(2,2,2);

.'

%绘制日开盘价散点图

markersize'

3);

可以改变点的大小

holdon

plot(p1,'

盒子法'

原始散点'

平滑曲线'

location'

northwest'

p2=smoothts(p0,'

g'

%高斯窗方法,窗宽为30,标准差为默认值0.65

subplot(2,2,3);

plot(p2,'

ylabel('

高斯窗方法'

p3=smoothts(p0,'

e'

%用指数法平滑数据,窗宽为30

subplot(2,2,4);

plot(p3,'

指数方法'

gridon

5.用medfilt1函数(一维中值滤波)

y=medfilt1(x,n)

y=medfilt1(x,n,blksz)

y=medfilt1(x,n,blksz,dim)

例5.产生一列正弦波信号,加入噪声信号,然后调用medfilt1函数对加入噪声的正弦波进行滤波(平滑处理)。

t=linspace(0,4*pi,500)'

%产生一个从0到4*pi的向量,长度为500

y=100*sin(t);

%产生正弦波信号

noise=normrnd(0,15,500,1);

%产生500行1列的服从N(0,152)分布的随机数,作为噪声信号

y=y+noise;

%将正弦波信号加入噪声信号

时间'

加噪声的正弦波'

%调用medfilt1对加噪正弦波信号y进行中值滤波,并绘制波形图

yy=medfilt1(y,30);

%指定窗宽为30,对y进行中值滤波

plot(t,y,'

b:

%b:

表示蓝色虚线

plot(t,yy,'

2);

%绘制平滑后曲线,黑色实线,线宽2

中值滤波'

加噪波形'

平滑后波形'

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

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2