How can I take the values of one array, map the values as indices to another array, then generate a thrid array with the sum of former's elements??
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Kirtiman
el 14 de Abr. de 2015
I know the question is a bit confusing, so let me illustrate what i am trying to do with an example:
A = [ 2 1 4 2 3 2 4 0 ]
B = [ 1 1.5 2 1.5 2.5 3 1 ]
Now what I need is C = [ 1.5 5.5 2.5 3 ] Here is an explanation:
A[2] = 1 , so B[2] = C[1]
A[1], A[4], A[6] = 2, so B[1]+B[4]+B[6]= C[2]
A[5] = 3 so B[5] = C[3]
A[3], A[7] = 4 so B[3]+B[5] = C[4]
The index elements from A with common values (or a particular value) are mapped to B(same indices), then the elements with those indices in B are added (if one value, directly become elements in C) to get array C such that the values of A are indices of C.
Edited: A[8] = 0, so neglect that value.
0 comentarios
Respuesta aceptada
Greg Dionne
el 14 de Abr. de 2015
Editada: Greg Dionne
el 14 de Abr. de 2015
You can use ACCUMARRAY. ACCUMARRAY is designed to take column vectors, not row vectors. So use this:
accumarray(A(:),B(:),[max(A) 1])'
Hope this helps!
-Greg
10 comentarios
Roger Stafford
el 15 de Abr. de 2015
Assuming A and B are still row vectors, try this:
t = A>0;
C = accumarray(A(t)',B(t)')';
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!