作业帮 > 综合 > 作业

刚接触matlab,自己编的程序错在哪里了?为什么会出现?Subscripted assignment dimensio

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/13 08:15:50
刚接触matlab,自己编的程序错在哪里了?为什么会出现?Subscripted assignment dimension mismatch.
这是给遗传算法工具箱GUI编的适应度函数,如下
function Z=effect(a)
c=0.45;
T=25;
e=0.07;
t=10;
z=0.3;
b=3.14/6;
D0=10;
z=0.5;
u0=6.7;
k=0.3;
Cp=0.3;
rou=1.009;
Da=D0*((2-z)/(2*(1-z)))^0.5;
l=Da/(1-k);
m=floor(10^3/l);
A=round(rand(m));
a=reshape(A,1,m*m);
[row,col]=find(A==1) ;
X=cos(b)*col+sin(b)*(m-row+1);
Y=sin(b)*col-cos(b)*(m-row+1);
B=[X,Y];
S=sortrows(B,1);
Xt=S(:,1);
Yt=S(:,2);
r=size(Xt,1);
N=r;
ct=c*N*(2+exp(-0.00174*N^2))/3*(1+T*e);
u(r)=u0;
for i=r-1:-1:1;
j=r;
for j=r:-1:i+1;
D(i)=Da*(1+2*k*(Xt(j)-Xt(i)));
if Xt(j)==Xt(i)
v(i,j)=u0;
elseif Yt(i)=Yt(j)-D(i)/2
v(i,j)=u(j)*(1-a*Da^2/D(i)^2);
else
v(i,j)=u0;
end
SUM=0;
for su=i+1:r;
SU=(1-v(i,su)/u0)^2;
SUM=SUM+SU;
end
end
u(i)=u0*(1-sqrt(SUM));
end
p=0.5*rou*u.^3*Cp;
pt=p*ones(r,1);
wt=pt*t;
Z=ct/wt;
把第一行去掉后在命令窗输入结果就出现了Subscripted assignment dimension mismatch.,但真的没找到问题在哪,
刚接触matlab,自己编的程序错在哪里了?为什么会出现?Subscripted assignment dimensio
v(i,j)=u(j)*(1-a*Da^2./D(i)^2);
a 是个向量对吧. 维度对不上. 37行
再问: 真的是,a改为z,但还有一个问题,这个函数我是想用来作为遗传算法工具箱的适应度函数,但是变量数设为3249后出现了 GA running. Error using ==> ga Too many output arguments. 是怎么回事,求解