Determining the total value of the number in each position of a matrix that corresponds to another same length matrix

4 ビュー (過去 30 日間)
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?

採用された回答

Stephen23
Stephen23 2018 年 5 月 3 日
>> 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 件のコメント
Lorenne
Lorenne 2018 年 5 月 6 日
The question is ‘determine the number of medals won per year’ so did I misunderstood the question or the answer is wrong?
Stephen23
Stephen23 2018 年 5 月 6 日
編集済み: Stephen23 2018 年 5 月 6 日
"...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?

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2018 年 5 月 3 日
medals = [1;1;5;7;3;1] ;
year = [2007;2009;2011;2018;2007;2007] ;
[c,ia,ib] = unique(year) ;
iwant=sum(medals(ib==1))
  2 件のコメント
Lorenne
Lorenne 2018 年 5 月 3 日
can you explain why you use ib?
Lorenne
Lorenne 2018 年 5 月 3 日
How to find for all of the years? like to find the total medals won in each year

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLaTeX についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by