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.
조회 수: 15 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
채택된 답변
Ameer Hamza
2020년 3월 18일
편집: Ameer Hamza
2020년 3월 18일
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);
댓글 수: 3
Ameer Hamza
2020년 3월 18일
I too got to know about it somewhere here on another question. I agree this makes the code more readible in many cases.
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!