Use vectors to index an 2D array

12 views (last 30 days)
paganelle
paganelle on 16 Oct 2020
Answered: Star Strider on 16 Oct 2020
I have two 1D vectors with X and Y coordinates in 2D array and I want to assign (X,Y) cells some values:
X = [1 2 3 4];
Y = [4 3 2 1];
A(X,Y) = 1;
I.e. want to have only A(1,4), A(2,3), A(3,2) and A(4,1) equal to 1;
But if I run those 3 lines, I have an entire matrix A filled with ones. Of course I can do it in a loop, but I sure it should be the way to vectorize it.

Accepted Answer

Star Strider
Star Strider on 16 Oct 2020
Use the sub2ind function to create linear indices from the subscripts:
X = [1 2 3 4];
Y = [4 3 2 1];
A = zeros(4);
Lidx = sub2ind(size(A), X, Y);
A(Lidx) = 1
producing:
A =
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!