Matrix 矩阵边界中单元的邻域

Matrix 矩阵边界中单元的邻域,matrix,neighbours,Matrix,Neighbours,我面临着一些问题来寻找矩阵中的邻居。我尽量不在代码中放太多的if语句,因为我很确定有更好的方法,但我不知道具体如何做 为了简化,假设我们有以下矩阵: 1 2 3 4 5 6 7 8 9 6 1 2 3 4 5 2 3 4 6 7 考虑到单元[2,2]=3,相邻单元将是(i,j-1),(i-1,j),(i+1,j),(i,j+1),(i-1,j-1)。我使用类似这样的for循环为它创建了一个“掩码”,其中inicio[0]是我当前元素的I坐标(

我面临着一些问题来寻找矩阵中的邻居。我尽量不在代码中放太多的
if
语句,因为我很确定有更好的方法,但我不知道具体如何做

为了简化,假设我们有以下矩阵:

 1  2  3  4  5  
 6  7  8  9  6  
 1  2  3  4  5  
 2  3  4  6  7
考虑到单元
[2,2]=3
,相邻单元将是
(i,j-1)
(i-1,j)
(i+1,j)
(i,j+1)
(i-1,j-1)
。我使用类似这样的
for循环为它创建了一个“掩码”,其中
inicio[0]
是我当前元素的I坐标(示例中为2),而
inicio[1]
是j坐标(元素3也是2)。另外,我正在考虑元素必须在遮罩的中心

 for(k=inicio[0]-1;k<inicio[0]+1;k++){
     for(z=inicio[1]-1;z<inicio[1]+1;z++)
         if(k!=0 || z!=0) //jump the current cell

如何处理这些
X
元素?我曾想过将边界初始化为零,但我认为这不是正确的方法。因此,如果有人能解释一种更好的方法或算法,我会很高兴

如何处理这些X元素?我想在零上初始化边界,这是一种非常明智且广泛使用的方法来解决您概述的问题。这个边界在文献中有时被称为光环,有时被称为鬼细胞。您在重影单元格中输入的值是特定于问题的。感谢您的回复!我真的认为这对一个小问题有效,我用过一次,但如果我们有一个大矩阵,使用它就不会有问题了?在这种情况下会添加很多元素,所以我一直认为在一般情况下可能不正确,但我不知道。如果我们有一个大矩阵,那么很好地使用它不会有问题,halo元素的数量会随着
4n
而增长,而矩阵元素的数量则随着
n^2
而增长。这是否是一个问题,是一个非常具体的问题和系统。但是,我重复一遍,这是许多在数组上运行的代码所采用的方法。我如何处理这些X元素?我想在零上初始化边界,这是一种非常明智且广泛使用的方法来解决您概述的问题。这个边界在文献中有时被称为光环,有时被称为鬼细胞。您在重影单元格中输入的值是特定于问题的。感谢您的回复!我真的认为这对一个小问题有效,我用过一次,但如果我们有一个大矩阵,使用它就不会有问题了?在这种情况下会添加很多元素,所以我一直认为在一般情况下可能不正确,但我不知道。如果我们有一个大矩阵,那么很好地使用它不会有问题,halo元素的数量会随着
4n
而增长,而矩阵元素的数量则随着
n^2
而增长。这是否是一个问题,是一个非常具体的问题和系统。但是,我重复一遍,这是许多在数组上运行的代码所采用的方法。我如何处理这些X元素?我想在零上初始化边界,这是一种非常明智且广泛使用的方法来解决您概述的问题。这个边界在文献中有时被称为光环,有时被称为鬼细胞。您在重影单元格中输入的值是特定于问题的。感谢您的回复!我真的认为这对一个小问题有效,我用过一次,但如果我们有一个大矩阵,使用它就不会有问题了?在这种情况下会添加很多元素,所以我一直认为在一般情况下可能不正确,但我不知道。如果我们有一个大矩阵,那么很好地使用它不会有问题,halo元素的数量会随着
4n
而增长,而矩阵元素的数量则随着
n^2
而增长。这是否是一个问题,是一个非常具体的问题和系统。但是,我重复一遍,这是许多在数组上运行的代码所采用的方法。
x x x  
x 1 2    
x 6 7