Periodic indexing of a matrix

17 views (last 30 days)
andrea
andrea on 1 Mar 2020
Commented: Alexander on 27 Feb 2024
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 Comments
andrea
andrea on 1 Mar 2020
So what I'm doing is an ising model, my matrix is a matrix of 1 and -1 randomly chosen. I choose a random element of my matrix then I need to choose another element among the nearest neighbors randomly and i want its index.
Guillaume
Guillaume on 1 Mar 2020
I don't know what's an ising model.
"and i want its index."
What for?

Sign in to comment.

Accepted Answer

David Goodmanson
David Goodmanson on 1 Mar 2020
Edited: David Goodmanson on 1 Mar 2020
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 Comment
Alexander
Alexander on 27 Feb 2024
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)

Sign in to comment.

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!