• 大小: 11KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Matlab
  • 标签:

资源简介

(1)求算术平均值; (2)求残余误差(绝对误差); (3)求标准差; (4)判断粗大误差,如果发现粗大误差,剔除粗大误差后再进行计算; (5)判断数据是否具有线性误差或者周期性误差。

资源截图

代码片段和文件信息

clear
clc
%以下为罗曼诺夫斯基准则中的判别表
cd_va=[4.97 3.56 3.30 2.78 2.62 2.51 2.43 2.37 2.33 2.29 2.26 2.24 2.22 2.20 2.18 2.17 2.26 2.15 2.14 2.13 2.12 2.11 2.10 2.10 2.09 2.09 2.08];

%以下为t分布表,a=0.01
t=[4.03 3.71 3.50 3.36 3.25 3.17 3.11 3.05 3.01 2.98 2.95 2.92 2.90 2.88 2.86];

%以下为检验周期性系统误差需要的表 p=0.95
zhouqi=[0.39 0.41 0.445 0.468 0.492 0.512 0.531 0.548 0.564 0.578 0.591 0.603 0.614 0.624];

%以下数据为罗曼诺夫斯基判别粗大误差所用数据     取a=0.01
luo=[11.46 6.53 5.04 4.36 3.96 3.71 3.53 3.41 3.31 3.23 3.17 3.12 3.08 3.04 3.01 3.00 2.95 2.93];

%=0;      %显著度


while 1
    x=input(‘请输入测量列:‘)
    l=length(x);                
    mean_x=0;                   %平均值
    for i=1:l
        mean_x=mean_x+x(1i)/l;
    end

    v=0;
    for i=1:l
        v(1i)=x(1i)-mean_x;     %v为残差
    end
    y=0;             %中间变量
    for i=1:l
         y=y+v(1i)*v(1i)/(l-1);
    end
    q=sqrt(y);         %  q为标准差
    
    qx=q/sqrt(l);   %算术平均的标准差
    
    %------------------------------------------------------
    %以下用罗曼夫斯基准则判别粗大误差
    %------------------------------------------------------
   
    for i=1:l        %对残差求绝对值
        s(1i)=abs(v(1i));
    end
    max_=max(s); %求残差绝对值中的最大值 
        n=1;         %改粗大误差值对应的列号
        for i=1:l
            if s(1i)==max_
                break;
            else
                n=n+1;
            end
           end
        qq=1;      %剔除算法
        pp=1;
        for i=1:l
            if i==n
            
                pp=pp+1;
            else
             x1(1qq)=x(1pp);      %剩余测量列
             qq=qq+1;
             pp=pp+1;
            end
        end
       
     %计算剩余测量列的平均值、标准差、等
        len=length(x1);
        mean_x1=0;                   %平均值
        for i=1:len
            mean_x1=mean_x1+x1(1i)/len;
        end
        v1=0;
        for i=1:len
            v1(1i)=x1(1i)-mean_x1;     %v1为残差
        end

        y1=0;         %中间变量
        for i=1:len
            y1=y1+v1(1i)*v1(1i)/(len-1);
        end
        q1=sqrt(y1);         %  q1为标准差
        
        qx1=q1/sqrt(len);   %算术平均的标准差
        
        kl=q1*luo(1(l-3));
        kl=kl*q1;
        tl=x(1n)-x1;
        tl=abs(tl);
        if tl>kl
            lyt_f=0;
        else
            lyt_f=1;
        end
               
        for i=1:len        %对残差求绝对值
            s1(1i)=abs(v1(1i));
        end
        
        max_2=max(s1); %求残差绝对值中的最大值
        n2=1;
        for i=1:len
            if s1(1i)==max_2
            break;
            else
            n2=n2+1;
            end
        end
 % 第二次剔除可疑值      
        qq1=1;
        pp1=1;
        for i=1:len
            if i==n2
            
                pp1=pp1+1;
            else
                h1(1qq1)=x1(1pp1);
                qq1=qq1+1;
                pp1=pp1+1;
            end
        end
  
        len2=length(x1);
        mean_x2=0;                   %平均值
        for i=1:len2
      

评论

共有 条评论

相关资源