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