Running a sum function using a for loop?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am running the following script: function[x]=sum1 (x,a,b)
total=0;
For k=1:length(x)
if a <=x(k)<=b
total=total+x (k);
end
end
y=total
end
On the command window i state
b= 4 14 6 3 4 10 8 6
y1=sum1(b,-5,0)
Ans=0
y2=sum1 (b,1,3)
Ans=55
I don't understand how this is obtain. I would think the answer is 3. Because what I'm trying to do is to add the number of b that fall between 1 and 3.
0 commentaires
Réponse acceptée
bio lim
le 15 Juil 2015
function[x]=sum1 (x,a,b)
total=0;
for k=1:length(x)
if x(k) >= a & b >= x(k)
total = total + x(k);
end
end
y = total
end
You can't write if a <=x(k)<=b. You must use the & expression.
0 commentaires
Plus de réponses (1)
Jan
le 15 Juil 2015
Modifié(e) : Jan
le 15 Juil 2015
a <= x(k) <= b is evaluated from the left to the right:
- a <= x(k) : This is either true or false, which is treated as 1 or 0
- 1 <= b or 0 <= b
This is not what you want. As posted already use the & operator or better &&.
By the way: You do not need a loop. This is nicer and faster:
total = sum(x(a <=x & x<=b));
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!