Adding values in an array within limits

조회 수: 1 (최근 30일)
Nikolas Spiliopoulos
Nikolas Spiliopoulos 2017년 3월 29일
편집: Stephen23 2017년 3월 29일
Hi all,
I have a vector A=[1 2 3 4 5 4]'
I would like to get from vector A, a vector B where its elements are the same with A, until the cumulative sum becomes 9. When the limit of 9 is reached the rest of the elements will be zero.
So the vector B will be : B=[1 2 3 3 0 0]'
I don't know if I explained it well
thanks in advance
Nikolas

채택된 답변

Adam
Adam 2017년 3월 29일
편집: Adam 2017년 3월 29일
B = zeros( size( A ) );
validIdx = cumsum( A ) <= 9;
B( validIdx ) = A( validIdx );
B( nnz( validIdx ) + 1 ) = 9 - sum( B );
would work, assuming you just clip the final value so you have a sum of 9.

추가 답변 (1개)

Stephen23
Stephen23 2017년 3월 29일
>> A = [1;2;3;3;5;4];
>> B = A.*(cumsum(A)<=9)
B =
1
2
3
3
0
0
  댓글 수: 2
Nikolas Spiliopoulos
Nikolas Spiliopoulos 2017년 3월 29일
Basically my vector is A = [1;2;3;4;5;4]; not A = [1;2;3;3;5;4];
thanks!
Stephen23
Stephen23 2017년 3월 29일
편집: Stephen23 2017년 3월 29일
@Nikolas Spiliopoulos: you can use whatever vector you want.
I just used the vector that fitted your desired output, which you gave as "B=[1 2 3 3 0 0]'". Did I guess wrong? If you could please explain the reason for why the fourth elements of A and B should be different, then I can show you how to achieve what you want.

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

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by