a=[1,2,3,4,5,4,20,2,1,2,3,4,5,4,3,2,1,2,3,4,8,4,3,2,1];
subplot(121);stem(a,'filled');
xlabel('序列个数n');
ylabel('幅值');
title('原序列');
axis([0 25 0 25]);
b=input('请输入阈值b:\n');
switch b
case b==0.05
x=1;
otherwise
x=2;
end
while(1)
a=sort(a);
i=1:length(a);
n=length(a);
T=[0.988 0.889 0.780 0.698 0.637 0.683 0.635 0.597 0.679 0.642 0.651 0.641 0.616 0.595 0.577 0.561 0.547 0.535 0.524 0.514 0.505 0.497 0.489;0.341 0.765 0.642 0.560 0.507 0.554 0.512 0.477 0.576 0.546 0.521 0.546 0.525 0.507 0.490 0.475 0.462 0.450 0.440 0.430 0.421 0.413 0.406];
if n<=7
r101=(a(n)-a(n-1))/(a(n)-a(1));
r102=(a(1)-a(2))/(a(1)-a(n));
g=T(x,n-2);
if r101>g
fprintf('剔除的数是 %f\n',a(n));
a(n)=[];
else fprintf('没有粗大误差\n');
end
if r102>g
fprintf('剔除的数是 %f\n',a(1));
a(1)=[];
else break;
end
end
if (n<=8)&&(n<=10)
r111=(a(n)-a(n-1))/(a(n)-a(2));
r112=(a(1)-a(2))/(a(1)-a(n-1));
g=T(x,n-2);
if r111>g
fprintf('剔除的数是 %f\n',a(n));
a(n)=[];
else fprintf('没有粗大误差\n');
end
if r112>g
fprintf('剔除的数是 %f\n',a(1));
a(1)=[];
else break;
end
end
if (n>=11)&&(n<=13)
r211=(a(n)-a(n-2))/(a(n)-a(2));
r212=(a(1)-a(3))/(a(1)-a(n-1));
g=T(x,n-2);
if r211>g
fprintf('剔除的数是 %f\n',a(n));
a(n)=[];
else fprintf('没有粗大误差\n');
end
if r212>g
fprintf('剔除的数是 %f\n',a(1));
a(1)=[];
else break;
end
end
if n>=14
r221=(a(n)-a(n-2))/(a(n)-a(3));
r222=(a(1)-a(3))/(a(1)-a(n-2));
g=T(x,n-2);
if r221>g
fprintf('剔除的数是 %f\n',a(n));
a(n)=[];
else fprintf('没有粗大误差\n');
end
if r222>g
fprintf('剔除的数是 %f\n',a(1));
a(1)=[];
else break;
end
end
end
subplot(122);stem(a,'filled');
xlabel('序列个数n');
ylabel('幅值');
title('原序列');
axis([0 25 0 25]);
评论5