flag_1=1;
flag_2=0; %% 计算
while flag_1==1
n=length(x);
avg=mean(x);
st=std(x,1);
reg=abs((x-avg)./st);
reg_max=max(reg);
%% 确定 g 值
T=[1.153 1.463 1.672 1.822 1.938 2.032 2.11 2.176 2.234 2.285 2.331 2.371 2.409 2.443 2.475
2.501 2.532 2.557 2.58 2.603 2.624 2.644 2.663 2.681 2.698 2.714 2.73 2.745;... 1.155
1.492 1.749 1.944 2.097 2.22 2.323 2.41 2.485 2.55 2.607 2.659 2.705 2.747 2.785 2.821 2.954
2.884 2.912 2.939 2.963 2.987 3.009 3.029 3.049 3.068 3.085 3.103];
switch alpha
case 0.05
g=0.5;
g=T(1,n);
case 0.01
g=T(2,n);
otherwise
disp('输入了错误的 alpha 值');
end
% 比较确定异常值
if reg_max>g
flag_2=1;
abn=x(reg>g);
disp('被剔除的数据为')
disp(abn);
x=x(reg<=g);
else flag_1=0;
end;
if flag_2==0
disp('没有异常数据');
end;
评论0