matlab程序出错,加了个矩阵We,就弹出Index exceeds matrix dimensions.请大神帮忙看看,感激不尽。

UL=17.2305;G=4130000;Ei=183.891;Z(4,1)=1;rg=0.5633;PY=19.7;TY=343;T=12;GP=2000;WP=200... UL=17.2305;G=4130000;Ei=183.891;Z(4,1)=1;rg=0.5633;PY=19.7;TY=343;T=12;GP=2000;WP=200;Bw=1.1;We(1)=0;
for n=1:1;
for i=1:1000;
for j=2:1000;
P(1,1:j)=19.7;P(2,1:j)=19.4;P(3,1:j)=19.0;
Y=((P(n,end)-P(n+2,end))/2)*(T^(1/2))*UL;
sum(j)=sum(j)+Y;
We(2)=sum(2);
P(n+3,j)=((22.11*(1-(GP/G)))/(1-(((We(j)-WP*Bw)*Ei)/G)))*Z(n+3,i);
We(j+1)=((P(n+1,j)-P(n+3,j))/2)*(T^(1/2))*UL+sum(j);
if abs(P(n+3,j)-P(n+3,j-1))<=0.002;
break;
end
end
Ppc=4.666+0.103*rg-0.25*rg*rg;
Tpc=93.3+181*rg-7*rg*rg;
Ppr=PY/Ppc;
Tpr=TY/Tpc;
Yg(i)=(0.27*Ppr)/(Z(n+3,i)*Tpr);
Z(n+3,i+1)=1+(0.3151-(1.0467/Tpr)-(0.5783/(Tpr^3)))*Yg(i)+(0.5353-(0.6123/Tpr)+(0.6815/(Tpr^3)))*Yg(i)^2;
if abs(Z(n+3,i)-Z(n+3,i+1))<=0.0005;
break;
end
end
end
循环可以运行,但只运行一次,下边求Z的循环应该没有问题的,主要是第一个,加了个矩阵We,之前没有,是用sum(j)的,加了以后就弹出Index exceeds matrix dimensions,希望大神帮我看看,是不是犯了什么低级错误,我已经看不出来了,感激不尽啊!
展开
 我来答
tianxiawulang
2015-02-26 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2531万
展开全部

1、出错原因:

在对 j 的循环里,下面这句:

sum(j)=sum(j)+Y;

在第一次循环就用到了sum(2),但sum并没有定义,所以会出现数组越界的错误。

 

2、解决方法:

由于不知道你的算法和那句“sum(j)=sum(j)+Y”的意图,没法给你更好的建议。如果只是为了让程序运行,在循环外面加一句

sum=zeros(1000,1);

对变量进行初始化即可避免运行错误,但结果未必是你想要的。

 

3、不建议把常用的内建函数 sum 作为变量名。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式