2014-10-07 85 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列开始。

相关问题