Determining the total value of the number in each position of a matrix that corresponds to another same length matrix
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Let's say i have a column vector medals = [1;1;5;7;3;1] and i have another column vector year = [2007;2009;2011;2018;2007;2007] and each of the element in 'year' corresponds to the matrix 'medals'. Eg: in 2007,i have 5 medals because year(1) ,year(5) and year(6) are 2007, and the total medals i won is 1+3+1 How do i find the total medals won for each of the year?
0 commentaires
Réponse acceptée
Stephen23
le 3 Mai 2018
>> year = [2007;2009;2011;2018;2007;2007];
>> medals = [1;1;5;7;3;1];
>> [uni,~,idx] = unique(year);
>> cnt = accumarray(idx,medals);
>> [uni,cnt]
ans =
2007 5
2009 1
2011 5
2018 7
6 commentaires
Stephen23
le 6 Mai 2018
Modifié(e) : Stephen23
le 6 Mai 2018
"...so did I misunderstood the question or the answer is wrong?"
Your question gives an example "Eg: in 2007... the total medals i won is 1+3+1", and that is exactly what my code gives you: for 2007 it returns the value 5. The other years seem to be correct too, when I check them. What are you expecting to get?
Plus de réponses (1)
KSSV
le 3 Mai 2018
medals = [1;1;5;7;3;1] ;
year = [2007;2009;2011;2018;2007;2007] ;
[c,ia,ib] = unique(year) ;
iwant=sum(medals(ib==1))
Voir également
Catégories
En savoir plus sur Calendar dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!