matlab 循环超出数组范围
for j=1:18
a=find(D(j,:)>0);
for z=1:length(a)
if jk(a(z))>HB.rt(j)
a(z)=[];
end
end
b=length(a);
c=ceil(rand*b);
gene(i,j)=a(c);
jk(a(c))=HB.lt(j);
end
运行出现如下错误:
??? Attempted to access a(4); index out of bounds because numel(a)=3.
Error in ==> lunwen at 24
if jk(a(z))>HB.rt(j)
我从逻辑上检查不可能出现这种情况,这究竟是怎么一回事,数据变量方面没有错误。
[解决办法]
for z=1:length(a)
if jk(a(z))>HB.rt(j)
a(z)=[];
end
end
你让a(z)=[], 整个数组元素会变少而
for中的"length"好想是整个循环只探测一次
用while试试