Boucle if avec somme
sisima05
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Timmydu26 Messages postés 80 Date d'inscription Statut Membre Dernière intervention -
Timmydu26 Messages postés 80 Date d'inscription Statut Membre Dernière intervention -
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
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
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.