源程序.m

来自「利用matlab编程进行参数检验」· M 代码 · 共 71 行

M
71
字号
%f1=str2double(get(handles.f1_input,'string'));
%f2=str2double(get(handles.f2_input,'string'));
%t=eval(get(handles.t_input,'string'));
  




function junzhicha( ) %设有两个正态总体其分布分别为N(mu1,sigma1^2)
                    %和N(mu2,sigma2^2),求两个正态总体均值差的区间估计
a=[6.683 6.681 6.676 6.678 6.679 6.672];
b=[6.661 6.661 6.667 6.667 6.664];
aj=mean(a);  %得到样本均值
bj=mean(b);
Sa=var(a);  %得到样本方差
Sb=var(b);
n1=length(a);  %得到样本容量
n2=length(b);
alpha=0.05;   %给定常数alpha
u2a=norminv(2*alpha,0,1);  %给定alpha,得到标准正态分布的双侧分位数
Sy=sqrt(Sa/n1+Sb/n2);  %Sy为样本均值差的标注差
S=sqrt(((n1-1)*Sa+(n2-1)*Sb)/(n1+n2-2));
t2a=tinv(2*alpha,n1+n2-2);   %给定alpha,得到t分布的双侧分位数
sigma=0.2;
sigma1=0.1;
sigma2=0.4;
if sigma~=NaN   %判断sigma是否已知
    f0=0;
else
    f0=1;
end
if sigma1~=NaN   %判断sigma1是否已知
    f1=0;
else
    f1=1;
end
if sigma2~=NaN   %判断sigma2是否已知
    f2=0;
else
    f2=1;
end
if f1==0 & f2==0    %当sigma1及sigma2为已知时
    Sz=sqrt(sigma1^2/n1+sigma2^2/n2);  %Sz为总体均值差的标注差
    sh=aj-bj+u2a*Sz
    xi=aj-bj-u2a*Sz
elseif f1==1 & f2==1 & n1>=50 & n2>=50  %当igma1与sigma2均为未知且n1与n2均不小于50时
    sh=aj-bj+u2a*Sy
    xi=aj-bj-u2a*Sy
else sigma1==sigma2 & sigma1==sigma & f0==1 & f1==1 & f2==1   %当sigma1与sigma2均为未知,且sigma1^2=sigma2^2=sigma^2时
    sh=a1-b1+t2a*S*sqrt(1/n1+1/n2)
    xi=a1-b1-t2a*S*sqrt(1/n1+1/n2)
end 


mu1=6;
mu2=7;
if mu1~=NaN    %判断mu1是否已知
    f3=0
else
    f3=1
end
if mu2~=NaN     %判断mu2是否已知
    f4=0
else
    f4=1
end
F=finv(alpha/2,n2-1,n1-1);   %给定alpha,得到f分布的双侧分位数
while f3==1 & f4==1
    sh=F*Sa/Sb
    xi=Sa/Sb*F
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?