Matlab 矩阵周期边界条件

Matlab 矩阵周期边界条件,matlab,matrix,indexing,boundary,periodicity,Matlab,Matrix,Indexing,Boundary,Periodicity,我需要一些帮助,我有一个在网格上表示点的矩阵,当给定一个元素时,我想找到它的最近邻的指数,记住我有周期性的边界条件,所以如果我有元素a(1,1),它的最近邻是 A(1,N) A(2,1) A(1,2) A(N,1) 其中A是我的矩阵,N是维数,我需要一个代码来找到给定元素N.N的索引。 提前谢谢 以下是我对你问题的解释: 给定一些周期矩阵A: >> A = magic(4) A = 16 2 3 13 5 11 10

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

  • A(1,N)

  • A(2,1)

  • A(1,2)

  • A(N,1)

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

以下是我对你问题的解释: 给定一些周期矩阵
A

>> A = magic(4)

A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
和一些元素
x
(示例
1
),然后找到
x
的4个相邻元素的(i,j)索引。在这种情况下,指数(3,4)、(4,3)、(4,1)、(1,4)对应于12,15,4,13

因为我不知道您的用例,所以我不知道索引的格式对您来说最方便。但作为一个例子,我们可以编写一个函数
neights
,它返回一个包含元素
x
的4个索引的结构

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

使用函数
mod
@CrisLuengo你能给我一些提示吗,mod不返回除法的模块吗??很抱歉,我看不出如何使用它,可以在这里找到1d的示例