matlab代码(这个是我在网上找到的亲测可以运行/平台:matlab2019a):
x=input('输入数据');
alpha=input('输入alpha值(0.01或0.05)');
flag_1=1;
flag_2=0;
%% 计算
while flag_1==1
x=sort(x);
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=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
end
if flag_2==0
disp('没有异常数据');
end
C++代码(这是我将matlab代码翻译成C++,同样亲测可用/平台VS2017):