0

我需要一些帮助,我在网格上有一个表示点的矩阵,当给定一个元素时,我想找到它最近邻居的索引,记住我有周期性边界条件,所以如果我有元素 A(1 ,1) 它最近的邻居是

  • A(1,N)

  • A(2,1)

  • A(1,2)

  • A(N, 1)

其中 A 是我的矩阵,N 是维度,我需要一个代码来找到给定元素的 nn 的索引。提前致谢。

4

1 回答 1

0

这是我对您的问题的解释:给定一些周期性矩阵A

>> A = magic(4)

A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

和一些元素x(示例1),然后找到 的 4 个邻居的 (i,j) 索引x。在这种情况下,索引 (3, 4), (4,3), (4, 1), (1, 4) 对应于 12, 15, 4, 13。

由于我不知道您的用例,因此我不知道索引以哪种格式对您最方便。但是作为示例,我们可以编写一个函数,该函数neighbors返回一个带有元素的 4 个索引的结构x

function out = neighbors(A, x)
[m, n] = size(A);
[i, j] = find(A == x);

mod2 = @(x) mod(x-1, [m, n])+1;

out.down  = mod2([i+1, j  ]);
out.up    = mod2([i-1, j  ]);
out.right = mod2([i  , j+1]);
out.left  = mod2([i  , j-1]);

end

然后我们可以按如下方式运行该函数。

A = magic(4);

out = neighbors(A, 1);
A(out.left(1), out.left(2)); % this returns 15
A(out.right(1), out.right(2)); % this returns 4
A(out.up(1), out.up(2)); % this returns 12
A(out.down(1), out.down(2)); % this returns 13
于 2020-03-04T05:01:26.497 回答