希望大神帮我看看这个代码,那里错了,我想对一组数据用matlab求出它服从什么分布,还有该怎样调用啊?
MatLab实现数据分布检验的程序MatLab实现数据分布检验的程序拿到数据的时候,首先要判断以下这批数据服从什么分布,下面是matlab程序/functionf=p_j...
MatLab实现数据分布检验的程序
MatLab实现数据分布检验的程序
拿到数据的时候,首先要判断以下这批数据服从什么分布,下面是matlab程序/
function f=p_judge(A,alpha)
% 本程序用于判别所给数据源在置信率为0.05时的概率分布形式。A的形式为n×1。
A=A(:);
[mu,sigma]=normfit(A);
p1=normcdf(A,mu,sigma);
[H1,s1]=kstest(A,[A,p1],alpha)
n=length(A);
if H1==0
disp('该数据源服从正态分布。')
else
disp('该数据源不服从正态分布。')
end
phat=gamfit(A,alpha);
p2=gamcdf(A,phat(1),phat(2));
[H2,s2]=kstest(A,[A,p2],alpha)
if H2==0
disp('该数据源服从γ分布。')
else
disp('该数据源不服从γ分布。')
end
lamda=poissfit(A,alpha);
p3=poisscdf(A,lamda);
[H3,s3]=kstest(A,[A,p3],alpha)
if H3==0
disp('该数据源服从泊松分布。')
else
disp('该数据源不服从泊松分布。')
end
mu=expfit(A,alpha);
p4=expcdf(A,mu);
[H4,s4]=kstest(A,[A,p4],alpha)
if H4==0
disp('该数据源服从指数分布。')
else
disp('该数据源不服从指数分布。')
end
[phat, pci] = raylfit(A, alpha)
p5=raylcdf(A,phat);
[H5,s5]=kstest(A,[A,p5],alpha)
if H5==0
disp('该数据源服从rayleigh分布。')
else
disp('该数据源不服从rayleigh分布。')
end 展开
MatLab实现数据分布检验的程序
拿到数据的时候,首先要判断以下这批数据服从什么分布,下面是matlab程序/
function f=p_judge(A,alpha)
% 本程序用于判别所给数据源在置信率为0.05时的概率分布形式。A的形式为n×1。
A=A(:);
[mu,sigma]=normfit(A);
p1=normcdf(A,mu,sigma);
[H1,s1]=kstest(A,[A,p1],alpha)
n=length(A);
if H1==0
disp('该数据源服从正态分布。')
else
disp('该数据源不服从正态分布。')
end
phat=gamfit(A,alpha);
p2=gamcdf(A,phat(1),phat(2));
[H2,s2]=kstest(A,[A,p2],alpha)
if H2==0
disp('该数据源服从γ分布。')
else
disp('该数据源不服从γ分布。')
end
lamda=poissfit(A,alpha);
p3=poisscdf(A,lamda);
[H3,s3]=kstest(A,[A,p3],alpha)
if H3==0
disp('该数据源服从泊松分布。')
else
disp('该数据源不服从泊松分布。')
end
mu=expfit(A,alpha);
p4=expcdf(A,mu);
[H4,s4]=kstest(A,[A,p4],alpha)
if H4==0
disp('该数据源服从指数分布。')
else
disp('该数据源不服从指数分布。')
end
[phat, pci] = raylfit(A, alpha)
p5=raylcdf(A,phat);
[H5,s5]=kstest(A,[A,p5],alpha)
if H5==0
disp('该数据源服从rayleigh分布。')
else
disp('该数据源不服从rayleigh分布。')
end 展开
展开全部
程序上没什么大问题,就是 f 在函数中从来没有赋过值,调用时会有误
另外最后还少一个end代表函数的结束
把这段程序保存成p_judge.m
然后主界面
a = [1 2 3 4 5 6 7];
f = p_judge(a,0.05);
就可以调用了
另外最后还少一个end代表函数的结束
把这段程序保存成p_judge.m
然后主界面
a = [1 2 3 4 5 6 7];
f = p_judge(a,0.05);
就可以调用了
更多追问追答
追问
该数据源服从rayleigh分布。
??? One or more output arguments not assigned during call to 'D:\MATLAB\work\p_judge.m (p_judge)'.
为什么我的运行结果是这样的呢?可以解释一下吗?
追答
这就是我说的输出 f 没有被赋值导致的错误啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询