벡터의 누적 합계를 계산하려고하지만 합계가 음수가되면 합계를 중지하고 양수 요소에서 다시 시작합니다.누적 합계> = 0 Matlab의 제한
예 :
[1 1 -1 -1 -1 -1 1 1 1 1]
가 정규 누적 합계는 다음과 같다 : :
우리는 벡터가
[1 2 1 0 -1 -2 -1 0 1 2]
을하지만 난 원하는 :
[1 2 1 0 0 0 1 2 3 4]
유일한에게 내가 할 수있는 해결책 나와 같은 최대 벡터의 요소를 통해 반복했다 :
test = [1 1 -1 -1 -1 -1 1 1 1 1];
testCumsum = zeros(size(test));
for i=1:length(test)
if i==1
testCumsum(i) = test(i);
else
testCumsum(i) = testCumsum(i-1) + test(i);
end
if testCumsum(i)<0
testCumsum(i) = 0;
end
end
더 많은 matlab-ish 솔루션이 있습니까?
(합계는 벡터가 상당히 커질 수있는 임의의 횟수 제외 될 수 있고, 요소는 단지 1 개수 일 수 -1)
그것은 어려운 것 같다 여기
입력A
및 출력C
에 대한 코드의 단순화이다. – tashuhka절대적인 명확성을 위해 루프 솔루션을 질문에 추가하는 것이 좋습니다 (정확한 해결책 일 수도 있습니다) – Dan
변수 이름으로'cumsum'을 사용하지 마십시오 !!! Matlab 함수를 숨길 것입니다! – Dan