matlab迭代循环的问题,这个程序怎么都有错,求好心人士指点错在哪

此程序的目的就是算出迭代次数以及lamda和beta的最后值n1=poissrnd(5,1,5);n2=exprnd(0.005,1,5);x=n1.*n2;m=1;wh... 此程序的目的就是算出迭代次数以及lamda和beta的最后值
n1=poissrnd(5,1,5);
n2=exprnd(0.005,1,5);
x=n1.*n2;
m=1;
while 1
lamda_0=4.5;
beta_0=0.007;
for i=1:5;
a_i=zeros(1,5);
b_i=zeros(1,5);
for j=1:5;
a_i(j)=lamda_(m-1)^j*beta_(m-1)^j*x(i)^(j-1)/factorial(j-1)^2;
b_i(j)=lamda_(m-1)^j*beta_(m-1)^j*x(i)^(j-1)/factorial(j-1)/factorial(j);
end;
sum(a_i);
sum(b_i);
d=zeros(1,5);
d(i)=sum(a_i)./sum(b_i);
lamda_m=1/5*sum(d);
beta_m=lamda_m*5/sum(x);
theta_m=[lamda_m,beta_m];
err=abs(theta_m-theta_(m-1));
if err<0.005
break;
else
m=m+1;
end;
L=lamda_m
B=beta_m
展开
 我来答
tybtch
2013-03-23 · TA获得超过934个赞
知道小有建树答主
回答量:495
采纳率:100%
帮助的人:152万
展开全部
错在几个地方:
1、程序中while和for循环的结构不完整,有些for和最外层的while都没有在结束的时候加上end命令
2、变量的递加和变量名的递加是两码事。你的程序中看得出来你想每得到一个lamda和beta值之后迭代进入下一循环的计算。但是你在想通过变量名中加入_m和_i表示递加是非常错误的。在matlab中合理的做法是用矩阵lamda(m)和beta(m)
追问
那能帮我改一下么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式