assiging values to matrix accrding to indexes using sub2ind

I have 3 data sets, two with coordinates and one with data with the length of n
with a loop I would assign the data in this way
MAT=zeros(m,n);
for i=1:n
MAT(Z(i),X(i))=MAT(Z(i),X(i))+DATA(i);
end
I want to do it without a loop since
what I am trying to do is something like
MAT=zeros(m,n);
mn=size(MAT);
MAT(sub2ind(mn,Z,X))=MAT(sub2ind(mn,Z,X))+DATA;
any one has an idea how to make it properly and efficiently?
cheers

 Respuesta aceptada

Honglei Chen
Honglei Chen el 21 de Ag. de 2012
Editada: Honglei Chen el 21 de Ag. de 2012
Try accumarray
MAT = accumarray([Z X],DATA)

4 comentarios

I would suggest
MAT = accumarray([Z X],DATA, [m n]);
as this version will create the correct output size even if the outermost indices do not happen to be used.
Thanks Walter, you are absolutely right. That's a good catch.
accumarray([Z(:),X(:)],DATA(:),[m n])
tnx guys

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Centro de ayuda 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