
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,希望大神帮我看看,是不是犯了什么低级错误,我已经看不出来了,感激不尽啊! 展开
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,希望大神帮我看看,是不是犯了什么低级错误,我已经看不出来了,感激不尽啊! 展开
1个回答
展开全部
1、出错原因:
在对 j 的循环里,下面这句:
sum(j)=sum(j)+Y;
在第一次循环就用到了sum(2),但sum并没有定义,所以会出现数组越界的错误。
2、解决方法:
由于不知道你的算法和那句“sum(j)=sum(j)+Y”的意图,没法给你更好的建议。如果只是为了让程序运行,在循环外面加一句
sum=zeros(1000,1);
对变量进行初始化即可避免运行错误,但结果未必是你想要的。
3、不建议把常用的内建函数 sum 作为变量名。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询