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??
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kirtiman
am 14 Apr. 2015
Bearbeitet: Kirtiman
am 15 Apr. 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 Kommentare
Akzeptierte Antwort
Greg Dionne
am 14 Apr. 2015
Bearbeitet: Greg Dionne
am 14 Apr. 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 Kommentare
Roger Stafford
am 15 Apr. 2015
Assuming A and B are still row vectors, try this:
t = A>0;
C = accumarray(A(t)',B(t)')';
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!