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일

1 개 추천

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일

1 개 추천

>> A = [1;2;3;3;5;4];
>> B = A.*(cumsum(A)<=9)
B =
1
2
3
3
0
0

댓글 수: 2

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.

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

카테고리

태그

질문:

2017년 3월 29일

편집:

2017년 3월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by