時間倉促,僅爲了數學建模入門使用函數
代碼簡單描述:spa
隨機生成一組數據code
手動添加奇怪的數據值blog
使用數據判斷對數據進行清洗數學
生成直方圖、求平均值對處理前、處理後的數據進行對比io
代碼以下:入門
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);
刪除重複的行table
使用unique函數function
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更新class
異常數據的處理
若確認數據在同一個樣本當中,絕大部分數據應該在均值爲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 >>