Matlab 矩阵周期边界条件
我需要一些帮助,我有一个在网格上表示点的矩阵,当给定一个元素时,我想找到它的最近邻的指数,记住我有周期性的边界条件,所以如果我有元素a(1,1),它的最近邻是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,N)
- A(2,1)
- A(1,2)
- A(N,1)
提前谢谢 以下是我对你问题的解释: 给定一些周期矩阵
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的示例