Matlab入門 實現簡單的資料剔除

2022-02-02 11:01:32 字數 3147 閱讀 8109

時間倉促,僅為了數學建模入門使用

**簡單描述:

隨機生成一組資料

手動新增奇怪的資料值

使用資料判斷對資料進行清洗

生成直方圖、求平均值對處理前、處理後的資料進行對比

**如下:

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)

910 a =

1112 -0.0023

1314 >> c=std(aa)

1516 c =

1718 0.5318

1920 >> num=find(aa>(a+3*c)|aa<(a-3*c))

2122 num =

2324 100

25 301

26 501

27 701

2829 >>std(aa)

3031 ans =

3233 0.5318

3435 >> for i = 1:1000

36if((aa(i)>(a+3*c)|aa(i)<(a-3*c)))

37 aa(i)=0;

38else

continue;39

end40

end41 >> len=length(aa);

42 >>std(aa)

4344 ans =

4546 0.0996

4748 >>plot(aa);

4950 >>mean(aa)

5152 ans =

5354 -0.0033

5556 >> hist(aa,100);

刪除重複的行

使用unique函式

1 >> a=[1,2,3;4,5,6;3,5,7;1,2,3]

23 a =

45 1 2 3

6 4 5 6

7 3 5 7

8 1 2 3

910 >> unique(a,'

rows

','stable')

1112 ans =

1314 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

111111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

11inf

100>> mean(c),trimmean(c,5

)ans =nan

ans =

1>> c=trim(c)

c = 111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1111

1>>

matlab 語言入門簡單記錄

matlab是弱型別。也就是變數賦值什麼就是什麼型別了。強型別的語言比如說c 這些,需要事先定義型別,定義之後才能使用。matlab可以直接使用賦值的變數。matlab的所有的值的儲存,都是以矩陣為基本單位的。比如說乙個變數的話就是乙個1 1的矩陣。常量 i or j 虛數單位,i 2 j 2 1 ...

關於MATLAB入門的簡單記錄1

陣列裡空陣列直接使用類似於 a 完成操作 魔方陣列有內建函式,a magic i i為需要的行列數 matlab可以支援生成子陣列 例如child a 3,取a陣列的第三行為child作為子陣列 child a 3,2,4 取a陣列的第三行的第二列和第四列為child作為子陣列 child a 3,...

Hog特徵的簡單實現 matlab

hog特徵的簡單實現 針對hog特徵不做過多的解釋 可參考其他博主的原理介紹。本文是matlab版本的實現。該版本的hog特徵將影象resize為64 128 首先將rgb轉灰度圖 再進行伽馬校正 對伽馬校正後的影象做歸一化處理 為什麼這樣做,請參看其他博主具體的原理介紹 伽馬校正使用的是 open...