Bonjour,
J'ai un vecteur :
X=[ 5 2 -4 -6 -2 1 4 2 -3 -6 -1 8 9 5 -6 -11]
L'objectif est de réaliser une somme cumulée des chiffres négatifs et positifs tant que la somme est inférieure à zero.
Je suis censé obtenir:
Y=[ 0 0 -4 -10 -12 -11 -7 -5 -8 -14 -15 -7 0 0 -6 -17]
Les conditions à respecter sont :
-Somme cumulée sur les chiffres négatifs et positifs tant que la somme est inférieure à zero
-Dès lors que la somme est supérieure à zero, la somme cumulée n'est plus effectuée jusqu'à la prochaine valeur négative.
-Lorsque la somme est supérieure à zero, la valeur affichée est 0.
J'ai déjà essayé ça:
1 2 3 4 5
|
X = [ 5 2 -4 -6 -2 1 4 2 -3 -6 -1 8 9 5 -6 -11];
indx = find(X<0);
Y = [zeros(1,indx(1)-1) cumsum(X(indx(1):end))];
Y(Y>0) = 0; |
mais le problème est que j'obtiens :
1 2 3 4 5 6 7 8 9
| Y =
Columns 1 through 15
0 0 -4 -10 -12 -11 -7 -5 -8 -14 -15 -7 0 0 0
Column 16
-10 |
Merci de votre aide.
Partager