首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

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

2012-02-07 
matlab 循环超出数组范围for j1:18afind(D(j,:)0)for z1:length(a)if jk(a(z))HB.rt(j)a(z)[]ende

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试试

热点排行