MATLAB: I am trying to write a function that takes both an input vector and scalar (v and n respectively). It needs to output the maximum value of the sum of n consecutive integers of v, as well as the index of the first term in v.

for loopnestednested for loop

I am trying to write a function that takes both an input vector and scalar (v and n respectively). It needs to output the maximum value of the sum of n consecutive integers of v, as well as the index of the first term in v.
Here is an example of how the function should work:
>> [total ind] = maxval([1 2 3 4 5 4 3 2 1],3)
total = 13
ind = 4
Here is the code that I have so far:
I do not understand how to get the function to replace a current maximum with a newly calculated larger maximum. I'm also confused on how to find the index and how to construct the "else" statement.
function [total, ind] = maxval(v, n)
total = 0;
ind = 0;
for a = 1:length(v)
for b = a:(a+n)
if sum(v(b)) > v % at this point im confused :/
total = sum(v(b));
ind = v(a);
else
total = sum(v(b))
end
end
end
end

Best Answer

There is no need to use a for loop.
v = [1 2 3 4 5 4 3 2 1];
n = 3;
sums = movsum(v, n, 'Endpoints', 'discard');
[~, idx] = max(sums);
max_sum = sums(idx);