用matlab验证是否为泊松分布时程序如下: 为什么会出现下面错误提示: 错误: 此上下文中不允许函数定义。
A=[2,2,3,4,5,6,1,2,66,7,35,23,5,36,7,1,2,3,1,3,11,14,51,2,78,8,7,26,23,11];functionf=...
A=[2,2,3,4,5,6,1,2,66,7,35,23,5,36,7,1,2,3,1,3,11,14,51,2,78,8,7,26,23,11];
function f=p_judge(A, alpha)
[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 展开
function f=p_judge(A, alpha)
[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 展开
2个回答
展开全部
直接粘贴你的代码到m文件中运行也是这个样子
研究一下你的代码做了以下改正:
把A=[2,2,3,4,5,6,1,2,66,7,35,23,5,36,7,1,2,3,1,3,11,14,51,2,78,8,7,26,23,11];这个单独放在命令行运行
将p_judge函数封装起来,并且保存为命名为p_judge.m的文件。
运行之后得到结果如下:
结果显示错误在第四行。
看来你这代码还有问题,于是就插入了一个断点,看看是哪里的问题。
错误的提示说kstest函数的参数什么什么矩阵必须是有且只有两行,
简单分析一下,排除掉A,alpha这两个参数,那么问题可能是在[A,p1]这个上面。
断点跟踪发现如下:
[A,p1]这个果然是有问题的居然是60列,果断修改掉。
我大致猜了一下作者的意图,把[A,p1]修改成了[A',p1']。
好了,变成两列了。同时把m文件中的相关数据都改了一下,大概改了下面几处:
然后我们运行一下看看。
咦?其他显示正常,怎么又冒出一个未对输出参数进行赋值的错误,我仔细的看了看代码,果然,代码中没有一个对f赋值的代码,果断判断是不是不需要输出的。就把f=给去掉了。
在运行看看。
aHa,终于没有问题了。
更多追问追答
追问
非常感谢您的耐心解答,由于我是初学者,所以调试起来略感吃力,您能把修改过的M文件发给我么
追答
文件在我另一个电脑上,只能明天给你i发了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询