Periodic indexing of a matrix
18 次查看(过去 30 天)
显示 更早的评论
I need some help, i have a matrix rapresenting points on a grid and when given a element i would like to find the indices of its nearest neighbors keeping in mind that i have periodic boundary conditions, so that if i have the element A(1,1) its nearest neighbors are
- A(1,N)
- A(2,1)
- A(1,2)
- A(N, 1)
Where A is my matrix and N is the dimension, and i need a code which will find the indices of n.n of a given element. Thanks in advance
4 个评论
采纳的回答
David Goodmanson
2020-3-1
编辑:David Goodmanson
2020-3-1
Hi Andrea,
for N points, index j, in 1 dimension,
fnext largest index = mod(j,N)+1
next smallest index = mod(j-2,N)+1
then just include the non-changing index for 2 dimensions.
As mentioned by Guillaume, it might be convenient to have entire matrices of new indices. For example, all the indices for the next right neighbor is
indright = (mod(1:N)+1,1:N)
and so forth.
1 个评论
Alexander
2024-2-27
This worked like a charm! Though I believe it should be:
indright = (mod(1:N,N)+1,1:N)
so that circularly shifting a vector's components by one index should look something like this:
x = [2 4 5]
N=length(x)
x_shift = x(mod(1:N,N)+1)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!