필터 지우기
필터 지우기

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

조회 수: 1 (최근 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))

카테고리

Help CenterFile Exchange에서 Calendar에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by