2014-10-07 83 views
1

我有MATLAB的問題 - 或者至少我目前無法解決它,如果我照顧特定的錯誤信息比我得到非常複雜的例子。帶到它的總基地,我的問題看起來如下:函數,以避免'索引超過矩陣尺寸'

我必須編寫連接四遊戲。遊戲場以零的方式初始化:

Field = zeros([6 7]); 

後來,我必須檢查勝利條件。但是,如果我做類似

if GameField(7, 7) == xxx 

那麼它明顯失敗,因爲遊戲場只有六列。確切的錯誤信息是'索引超出矩陣尺寸' - 我完全可以理解這是爲什麼。

是否有任何函數可以幫助我避免這種錯誤(像編程語言中的try-catch一樣)。舉例來說,我知道有一個叫做exists的函數,但是這隻適用於變量等 - 但與矩陣尺寸無關。處理對角線值時使用length()-函數將會非常棘手。實際上,我在尋找的作品以下

if valueExists(GameField(7, 7)) 
     %do something 
    else 
     %do something other 
    end 
+3

'尺碼'呢? – 2014-10-07 22:49:29

+0

http://www.mathworks.com/help/matlab/ref/try.html但是最好是在需要時檢查大小 – Cheery 2014-10-07 22:53:34

回答

0

你知道該字段的大小,存儲在一個變量叫fieldSize功能(在這裏我不知道名字)。

fieldSize = [6 7]; 

因此,可以方便地初始化字段作爲

Field = zeros(fieldSize); 

接着,當要執行的檢查,例如,值到當前位置的右下方是否爲1,可以經常檢查對fieldSize第一

currentPosition = [1 7]; 
bottomRight = currentPosition - [1 1]; 
if any(bottomRight < 1 | bottomRight > fieldSize) 
    % do not check b/c out of field 
else 
    % perform check 
end 

或者,您也可以優化您的搜索策略,讓你從來不看在首位以外的領域。例如,從左到右的四個對角線從左到右不能從第5:7列開始。

相關問題