Running a sum function using a for loop?

4 visualizzazioni (ultimi 30 giorni)
laty ag
laty ag il 15 Lug 2015
Modificato: Jan il 15 Lug 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.

Risposta accettata

bio lim
bio lim il 15 Lug 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.

Più risposte (1)

Jan
Jan il 15 Lug 2015
Modificato: Jan il 15 Lug 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));

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by