How to access specific elements of an array?

Suppose I have two matrices A and x as follows:
x =
1 2
2 3
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
Each row of x contains the row and column indices of an element of A that I would like to access and change. In the above example, I want to change the (1,2) and (2,3) elements of A. Suppose I want to set the value of these elements to 5. The command 'A([1 2],[2 3]) = 5;' produces A =
1 5 5 1
1 5 5 1
1 1 1 1
1 1 1 1
However, what I want is the following:
A =
1 5 1 1
1 1 5 1
1 1 1 1
1 1 1 1
In my actual code, A and x may have thousands of elements each. Therefore, I am wondering whether it is possible to do this without using a for loop?

 Respuesta aceptada

Star Strider
Star Strider el 14 de Jul. de 2017
Editada: Star Strider el 14 de Jul. de 2017
One approach:
ix = sub2ind(size(A), x(:,1), x(:,2)); % Change Subscripts To Linear Index Vector
A(ix) = 5;
A =
1 5 1 1
1 1 5 1
1 1 1 1
1 1 1 1

2 comentarios

Karthik Nagarajan
Karthik Nagarajan el 14 de Jul. de 2017
Thank you for the quick reply. Exactly what I was looking for!
Star Strider
Star Strider el 14 de Jul. de 2017
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 14 de Jul. de 2017

Comentada:

el 14 de Jul. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by