finding a sum of a vector without using the sum(x) function

2 views (last 30 days)
SonOfAFather on 12 Sep 2012
I can make my program give the correct answer using the sum(x) function, but i can't use the sum(x) function. is there a way to use either a for or while loop to accomplish the same thing. my present code is:
clc;
clear all;
close all;
w = [1,1.2,.8,1];
x = [75, 80, 65, 78];
wa = 75;
for i = 1:1:length(x);
wa(i) = x(i)*w(i);
end
sum(wa(1:i)./i)
this yeilds the 75.25 answer that i should get. is there some simple that will fix the sum(wa(1:i)./i) I know that i can use the finite fix of wa(1)+wa(2)+...+wa(i), but i need it to work for any number of indexis of wa. as sum(wa(1:i)) does.

Sean de Wolski on 12 Sep 2012
Edited: Sean de Wolski on 12 Sep 2012
Okay code golf:
w*x'/numel(x)
Matt Fig on 12 Sep 2012
Edited: Matt Fig on 12 Sep 2012
Hole-in-one.
ans/length(x)

Matt Fig on 12 Sep 2012
If you don't need all of the wa, you should just do a running sum.
w = [1,1.2,.8,1];
x = [75, 80, 65, 78];
wa = 0;
for ii = 1:1:length(x);
wa = wa + x(ii)*w(ii);
end
wa/ii

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!