当前位置: 代码迷 >> 其他开发语言 >> matlab 循环超出数组范围解决办法
  详细解决方案

matlab 循环超出数组范围解决办法

热度:9007   发布时间:2013-02-26 00:00:00.0
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试试
  相关解决方案