Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 避免“索引超出矩阵维度”的函数_Arrays_Matlab - Fatal编程技术网

Arrays 避免“索引超出矩阵维度”的函数

Arrays 避免“索引超出矩阵维度”的函数,arrays,matlab,Arrays,Matlab,我对MATLAB有问题,或者至少我现在不能解决它,如果我注意到那个特定的错误信息,我会得到非常复杂的例子。总的来说,我的问题如下: 我必须编写一个连接四的游戏。游戏场以零的方式初始化: Field = zeros([6 7]); 稍后,我必须检查获胜的条件。然而,如果我做了类似的事情 if GameField(7, 7) == xxx 然后它显然失败了,因为游戏场只有六列。确切的错误信息是“索引超过了矩阵维度”——我完全可以理解这是为什么 是否有任何函数可以帮助我以类似于编程

我对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

您知道字段的大小,将其存储在名为fieldSize的变量中

因此,您可以方便地将字段初始化为

Field = zeros(fieldSize);
接下来,当您想要执行检查时,例如,当前位置右下角的值是否为1,您总是可以首先检查fieldSize

或者,你可以优化你的搜索策略,这样你一开始就不会把目光投向领域之外。例如,从左下到右上的四条对角线永远不能从第5:7列开始。

但如果需要,最好只检查大小
Field = zeros(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