我想通过给出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
是数组的位置。有点笨重。
答案 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。