vectorized non-linear matrix assignment

1 visualización (últimos 30 días)
cmo
cmo el 18 de Mayo de 2015
Comentada: John D'Errico el 18 de Mayo de 2015
Let A be an m x n matrix (both m,n > 1).
let "X" p-by-1 be a set of row indices of A, and "Y" p-by-1 be a set of column indices of "A".
Suppose I want to assign the values of vector "V" p-by-1 to coordinates "(X,Y)" of "A".
Is there a way to vectorize this assignment?
e.g.
A = zeros(10,10);
X = [1 4 5 9];
Y = [ 2 2 1 8];
V = [1.1 2.98 -3 14];
i.e.
I want to assign A(1,2) = 1.1 and A(4,2) = 2.98 and A(5,1) = -3 and A(9,8) = 14.
something like "A(X,Y) = V", but that doesnt work.

Respuestas (1)

Star Strider
Star Strider el 18 de Mayo de 2015
Using the sub2ind function is the easiest way:
LI = sub2ind(size(A), X', Y');
A(LI) = V
  1 comentario
John D'Errico
John D'Errico el 18 de Mayo de 2015
+1. While this is of course the correct answer, it has always bothered me that there is not a more direct solution. Use of sub2ind is just too un-obvious to the new user.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by