Boucle if avec somme
sisima05
Messages postés
2
Statut
Membre
-
Timmydu26 Messages postés 85 Statut Membre -
Timmydu26 Messages postés 85 Statut Membre -
Bonjour,
je vous remerci d'abord d'avoir m'aider,
le probleme c'est que le nombre calculé n'est pas la somme que j'attends, normalement ça marche avec c++ ms avec matlab je ne sais pas ou est l'erreur, s'il vous plait aidez moi
merci
je vous remerci d'abord d'avoir m'aider,
n=164;
for i=1:n
if A(i,1)>2015000
S=A(i,7)
s=sum(S)
end
end
le probleme c'est que le nombre calculé n'est pas la somme que j'attends, normalement ça marche avec c++ ms avec matlab je ne sais pas ou est l'erreur, s'il vous plait aidez moi
merci
A voir également:
- Boucle if avec somme
- Somme si couleur - Guide
- Formule somme excel ligne - Guide
- Somme en anglais excel - Guide
- Somme excel ne fonctionne pas ✓ - Forum Excel
- Boucle excel sans macro - Forum Excel
j'attends la sommes des valeurs de la 7éme colonne de la iéme ligne qui vérifie la condition:
A(i,1)>2015000
Pour chaque ligne, si la valeur de la 1ere colonne et superieur a 2015000 tu recupere dans S la valeur de la 7eme colonne. Mais quand tu fait s=sum(S): tu dit que s vaut la somme des valeurs de S. MAIS tu as defini S comme etant une variable et non un tableau donc, c'est comme si tu avais directement écrit s=S.
Pour corriger tu peut faire comme ceci:
n=164;
S=zeros(n,1); % tu créér un vecteur rempli de zeros
for i=1:n
if A(i,1)>2015000
S(i)=A(i,7); % tu remplace le zeros par la valeur de la 7eme colonne pour chaque
%indice de ligne ou la 1ère colonne est superieur à 2015000
end
end
s=sum(S); % puis enfin tu fais la somme.
Sinon, de maniere plus simple tu doit pouvoir faire un truc du genre:
s= sum(A(:,7).*(A(:,1) > 2015000));
C'est à dire:
(A(:,1) > 2015000) te donne un vecteur rempli de 1 et de 0. la ligne est a 1 si la 1ere colonne rempli la condition >2015000.
si tu mutiplie ce vecteur sur la 7eme colonne et que tu somme le tout tu doit avoir ce que tu cherche. Et tu auras un gain de temps de calcul, matlab et fait pour faire du calcul matriciel, il faut donc eviter les boucles en generale pour allez plus vite.
SI tu n'as rien compris n'hésite pas a me le dire. Mais je ne suis pas sur d'avoir bien compris ce que tu voulais faire. Cordialement.