MATLAB自动处理数组超出范围,给出0

时间:2011-11-27 21:12:05

标签: arrays matlab

我想通过给出0来自动处理数组越界索引访问。

但我现在拥有的代码就像

evenIndexNext = 2*j+1 + 2*i ;
oddIndexPrev = 2*j+1 - i ;
evenValueNext = 0 ;
oddValuePrev = 0 ;
if( evenIndexNext <= n )
  evenValueNext = s( evenIndexNext ) ;
end
if( oddIndexPrev >= 1 ) 
  oddValuePrev = s( oddIndexPrev ) ;
end

s是数组的位置。有点笨重。

2 个答案:

答案 0 :(得分:2)

也许,你可以这样做:

try
  evenValueNext = s( evenIndexNext ) ;
catch
  evenValueNext=0;
end

或者,您可以定义一个函数来执行此操作:

function y=checkBound(l,i)
  if (i<1) || (i>numel(l))
    y=0;
  else
    y=l(i);
  end
end

evenValueNext = checkBound(s,evenIndexNext);
oddValuePrev = checkBound(s,oddIndexPrev) ;

答案 1 :(得分:0)

您可以定义一个新类来处理这个问题。如果你重载了类的subsref方法,你可以告诉它检查索引是否超出范围,如果是这种情况则返回0。