Adding numbers in array in a specific order

조회 수: 5 (최근 30일)
Raza Hassan
Raza Hassan 2020년 3월 25일
댓글: Raza Hassan 2020년 3월 26일
Need to create a code for the following statement:
let a=[1 3 5 6 6 7 7 7] , b=[81 122 245 329 656 790 850 1023]
c=[1 1 1 2 3] where c is showing how many times a unique value of a has been repeated e.g. '1' is repeated '1' time, '6' is repeated '2' times and so on.
Now what I need to do is to create d such that if 1st index of c is 1 then assign 1st index value of b to d and if 1st index of c is 2 then assign 1st and 2nd index value of b to d.
In short what I need is d which will have value d=[81 122 245 329+656 790+850+1023].
Will appreciate your help:D

채택된 답변

Stephen23
Stephen23 2020년 3월 25일
>> [~,~,X] = unique(a);
>> d = accumarray(X(:),b(:))
d =
81
122
245
985
2663
  댓글 수: 3
Stephen23
Stephen23 2020년 3월 26일
>> [~,~,x] = unique(a);
>> d = zeros(1,max(x));
>> for k = 1:numel(b), d(x(k)) = d(x(k)) + b(k); end
>> d
d =
81 122 245 985 2663
Raza Hassan
Raza Hassan 2020년 3월 26일
Thank you very much.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by