2011-11-27 125 views
0

我想自動處理數組越界索引訪問通過給0代替。MATLAB的自動處理數組越界與0 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

也許,你可以這樣做:

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) ; 
+0

我想一個函數是我們能做的最好的 – bobobobo

0

你可以定義一個新的類來處理這個問題。如果你重載了類的subsref方法,你可以告訴它檢查索引是否超出範圍,如果是這種情況,則返回0。