Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
Algorithm 在Matlab中有条件地求八个邻域的行数和列数_Algorithm_Matlab_Graph_Matrix - Fatal编程技术网

Algorithm 在Matlab中有条件地求八个邻域的行数和列数

Algorithm 在Matlab中有条件地求八个邻域的行数和列数,algorithm,matlab,graph,matrix,Algorithm,Matlab,Graph,Matrix,我有一个6*6矩阵 A= 3 8 8 8 8 8 4 6 1 0 7 -1 9 7 0 2 6 -1 7 0 0 5 4 4 4 -1 0 2 8 1 1 -1 0 8 3 9 我感兴趣的是从A(4,4)=5开始查找邻居的行数和列数。但是,只

我有一个6*6矩阵

A=
  3     8     8     8     8     8
  4     6     1     0     7    -1
  9     7     0     2     6    -1
  7     0     0     5     4     4
  4    -1     0     2     8     1
  1    -1     0     8     3     9
我感兴趣的是从A(4,4)=5开始查找邻居的行数和列数。但是,只有当(4,4)的元素4在右侧,6在左侧,2在顶部,8在底部,1在左上角对角,3在右上角对角,7在左下角对角,9在右下角对角时,它们才会链接到(4,4)作为邻居。更清楚的是,如果邻居围绕着A(4,4),A(4,4)将有邻居,如下所示:

 1     2     3;
 6     5     4;
 7     8     9;
当找到每个邻居时,这种情况将继续。 也将忽略0和-1。最后,我希望得到这些单元格的行和列编号,如下图所示。有没有什么方法可以让这个网络形象化呢。这只是样品。我真的有一个巨大的矩阵

好的,酷,你已经非常接近了,这是循环的最终解决方案。它的运行时间约为0.002秒,所以我认为速度相当快。输出是

FinalAnswer =

     0     0     0     0     0     0
     0     1     1     0     0     0
     0     1     0     1     0     0
     1     0     0     1     1     1
     0     0     0     0     1     0
     0     0     0     0     0     1


coords =

     4     1
     2     2
     3     2
     2     3
     3     4
     4     4
     4     5
     5     5
     4     6
     6     6

您尝试了什么?7s(图中绿色)如何满足您的条件。它们既不在底部,也不在对角线A(4,1)上。你能澄清一下吗?…A(2,3)的对角元素A(3,2)的值为7,所以它是邻居。A(3,2)的对角元素A(4,1)的值为7,所以它也是邻居。这样他们就联系在一起了。谢谢Dan。将给出一个快照,但这不是选择一个(4,6)和一个(2,2),一个(2,3),它会找到所有这些,包括果岭。它肯定会找到A(2,2),A(4,6)和A(2,3)。您确定要循环遍历[x,y]=find(current-pass)中的所有x和y值吗?我现在运行它发现的唯一问题是,在边界附近会有维度问题。解决这个问题的最简单方法是用零填充。我将编辑我的答案。这个解决方案是正确的,在你的例子中,它在4次迭代后找到所有的黄色和绿色元素。但我要强调的是,你必须循环x和y变量。我没有做这个循环,你需要自己做。所以有两个循环,一个while循环检查过去和现在是否不同,然后一个for循环遍历find()返回的所有x,y对!好吧,我没有经历这一切。P=焊盘阵列(A,[1]);电流=零(尺寸(A)+2);过去=零(尺寸(A)+2);但我不是当前(5,5)=1;而(当前过去)=1;[x,y]=查找(当前-过去);过去=现在;对于i=1:尺寸(x);对于j=1:尺寸(y);xcoords=x-1:x+1;ycoords=y-1:y+1;电流(xcoords(i),ycoords(j))=。。。(P(xcoords,ycoords)=testi)|电流(xcoords,ycoords);end FinalAnswer=当前(2:end-1,2:end-1);[R,C]=查找(FinalAnswer);我甚至想不出错误在哪里。我真丢脸:(
FinalAnswer =

     0     0     0     0     0     0
     0     1     1     0     0     0
     0     1     0     1     0     0
     1     0     0     1     1     1
     0     0     0     0     1     0
     0     0     0     0     0     1


coords =

     4     1
     2     2
     3     2
     2     3
     3     4
     4     4
     4     5
     5     5
     4     6
     6     6