Running a sum function using a for loop?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
bio lim
am 15 Jul. 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 Kommentare
Weitere Antworten (1)
Jan
am 15 Jul. 2015
Bearbeitet: Jan
am 15 Jul. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!