Boucle if avec somme
Fermé
sisima05
Messages postés
1
Date d'inscription
samedi 11 juillet 2015
Statut
Membre
Dernière intervention
11 juillet 2015
-
Modifié par KX le 11/07/2015 à 08:10
Timmydu26 Messages postés 80 Date d'inscription mercredi 29 avril 2015 Statut Membre Dernière intervention 17 juin 2016 - 15 juil. 2015 à 17:22
Timmydu26 Messages postés 80 Date d'inscription mercredi 29 avril 2015 Statut Membre Dernière intervention 17 juin 2016 - 15 juil. 2015 à 17:22
A voir également:
- Boucle if avec somme
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- If exist ✓ - Forum Autoit / batch
- Somme en anglais excel - Guide
- Boucle cmd - Forum Programmation
1 réponse
Timmydu26
Messages postés
80
Date d'inscription
mercredi 29 avril 2015
Statut
Membre
Dernière intervention
17 juin 2016
30
15 juil. 2015 à 10:11
15 juil. 2015 à 10:11
Que contient A?
Quels résultats tu attend?
Quels résultats tu attend?
15 juil. 2015 à 16:07
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
Modifié par Timmydu26 le 15/07/2015 à 17:25
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.