时间仓促,仅为了数学建模入门使用
代码简单描述:
随机生成一组数据
手动添加奇怪的数据值
使用数据判断对数据进行清洗
生成直方图、求平均值对处理前、处理后的数据进行对比
代码如下:
1 >> aa=randn(1000,1)/10; 2 >> aa(100)=aa(100)+3; 3 >> aa(301)=aa(301)+5; 4 >> aa(501)=aa(501)+7; 5 >> aa(701)=aa(701)-14; 6 >> plot(aa); 7 >> hist(aa,100); 8 >> a=mean(aa) 9 10 a = 11 12 -0.0023 13 14 >> c=std(aa) 15 16 c = 17 18 0.5318 19 20 >> num=find(aa>(a+3*c)|aa<(a-3*c)) 21 22 num = 23 24 100 25 301 26 501 27 701 28 29 >> std(aa) 30 31 ans = 32 33 0.5318 34 35 >> for i = 1:1000 36 if((aa(i)>(a+3*c)|aa(i)<(a-3*c))) 37 aa(i)=0; 38 else continue; 39 end 40 end 41 >> len=length(aa); 42 >> std(aa) 43 44 ans = 45 46 0.0996 47 48 >> plot(aa); 49 50 >> mean(aa) 51 52 ans = 53 54 -0.0033 55 56 >> hist(aa,100);
删除重复的行
使用unique函数
1 >> A=[1,2,3;4,5,6;3,5,7;1,2,3] 2 3 A = 4 5 1 2 3 6 4 5 6 7 3 5 7 8 1 2 3 9 10 >> unique(A,'rows','stable') 11 12 ans = 13 14 1 2 3 15 4 5 6 16 3 5 7
9/15更新
异常数据的处理
若确认数据在同一个样本当中,绝大部分数据应该在均值为4or5个标准偏差之内
对坏数据的处理
①个别处理
②按照一定百分比剔除最大与最小的一部分数据,exp(上下各剔除百分之2.5%),坏数据去除以后对统计量重新计算
这里是对②实现的简单例子
使用trimmean函数对坏数据进行剔除
调用格式
m=trimmean(X,percent)
忽略数据上下各percent/2 %后的均值
可以使用下列m函数去除坏数据
% trim.c 文件 function data=trim(data,outval) %去除坏数据 包括NaN、Inf和异常大小数据 if nargin<2 outval=4; end outliers = (isnan(data)|abs(data)==inf); [n,m]=size(data); if m>1, data(any(outliers'),:)=[]; else data(find(outliers'),:)=[]; end [n,m]=size(data); mu=mean(data); sigma=std(data); outliers=(abs(data-ones(n,1)*mu)>outval*ones(n,1)*sigma); if m>1, data(any(outliers'),:)=[]; else data(find(outliers'),:)=[]; end
下面是函数调用实例
>> clear all; >> c=[nan;ones(100,1);inf;100] %含有nan inf和一个不正常大的数100 c = NaN 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Inf 100 >> mean(c),trimmean(c,5) ans = NaN ans = 1 >> c=trim(c) c = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >>