马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
a=[1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12];
b=[1 2 3];
qS=[1 1.2 2.4];
for k=1 :4
for i=1 : 5
for j=1 :3
tKS(k,:,:)=rep(a(k,:)-b,[5,1]);
aJS(k,:,:)=rep(a(k,:),[5,1]);
if i<tKS(k,i,j)
f(k,i,j)=0;
elseif i>aJS(k,i,j)
f(k,i,j)=0;
else
f(k,i,j)=1;
end
m(k,i,j)=f(k,i,j)*qS(j);
end
end
end
这个算法在MATLAB中运行结果是正确的,但是
tG=[1 3 13 2 4 6 15 11 4];
Chrom=crtbp(20,9*5);
FieldD=[rep([5],[1,9]);rep([1;16],[1,9]);rep([1;0;1;1],[1,9])];
t=bs2rv(Chrom,FieldD);
for k=1 : 20
for i=1 : 5
for j=1 : 9
tKS(k,:,:)=rep(t(k,:)-tG,[5,1]);
tJS(k,:,:)=rep(t(k,:),[5,1]);
if i<tKS(k,i,j)
f(k,i,j)=0;
elseif i>tJS(k,i,j)
f(k,i.j)=0;
else
f(k,i,j)=1;
end
end
end
end
在运行时就会出现??? Attempt to reference field of non-structure array.
其中第二个程序中t就是第一个程序中的a,只不过是用遗传算法生成的一个二维实数数组。而且在执行第二个程序for循环之前的语句是正确的,就是不知道为什么将先用遗传算法算创建初始的二维数组后,再用for循环就会出错。
在两个程序中f是个状态变量,在tKS和tJS之间取1,其他取0.
这个程序折磨了我好久,期盼高手相助啊! |