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.

 Réponse acceptée

Star Strider
Star Strider le 16 Oct 2020

2 votes

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
.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by