Filter löschen
Filter löschen

Running a sum function using a for loop?

2 Ansichten (letzte 30 Tage)
laty ag
laty ag am 15 Jul. 2015
Bearbeitet: Jan am 15 Jul. 2015
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.

Akzeptierte Antwort

bio lim
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.

Weitere Antworten (1)

Jan
Jan am 15 Jul. 2015
Bearbeitet: Jan am 15 Jul. 2015
a <= x(k) <= b is evaluated from the left to the right:
  1. a <= x(k) : This is either true or false, which is treated as 1 or 0
  2. 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));

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!

Translated by