I need some help in seeing where I am going wrong and how to proceed with writing a particular funciton for a MATLAB course I am taking please.
Show older comments
The question is this:
Write a function called max_sum that takes v, a row vector of numbers, and n, a positive integer as inputs. The function needs to find the n consecutive elements of v whose sum is the largest possible. In other words, if v is [1 2 3 4 5 4 3 2 1] and n is 3, it will find 4 5 and 4 because their sum of 13 is the largest of any 3 consecutive elements of v. If multiple such sequences exist in v, max_sum returns the first one. The function returns summa, the sum as the first output argument and index, the index of the first element of the n consecutive ones as the second output. If the input n is larger than the number of elements of v, the function returns 0 as the sum and -1 as the index. Here are a few example runs:
[summa, index] = max_sum([1 2 3 4 5 4 3 2 1],3)
summa = 13
index = 4
[summa, index] = max_sum([1 2 3 4 5 4 3 2 1],2)
summa = 9
index = 4
THe code I have written so far is as follows. My problem is that I am stuck on obtaining the largest possible sum. I wrote code and have been able to generate different sums in a vector but I am unable to put those answers in a vector themselves, by putting the answers in a vector I want to be able to use the 'max' function to obtain the largest sum. I haven't even touched finding the 'index' portion yet. Here's my code:
function [summa,index] = max_sum(v,n)
r = 0;
summa = zeros(1,length(v)); %% created a vector of 0's to length of v
if n > length(v)
summa = 0;
index = -1;
else
while n <= length(v)
summa = sum(v(r+1:n)) % here need to replace 0's with the sum (with logical index) so i can choose max
r = r+1;
n = n+1;
end
summa = max(summa);
index = n;
end
%summa = v;
%index = n;
end
Again, I need some help because I am unsure how to proceed from here. Thank you.
Accepted Answer
More Answers (1)
Mukti Awad
on 16 Aug 2019
0 votes
I am getting this error while executing code
- Assessment result: incorrect[1 2 3 4 5 4 3 2 1]max_sum([ 1 2 3 4 5 4 3 2 1 ], 10) returned the following MATLAB error: Index exceeds the number of array elements (9).
- Assessment result: incorrectrandom vectorsVariable summa has an incorrect value. max_sum([ 71 -54 17 60 -51 -3 98 -65 -61 35 90 94 -11 -69 82 -86 -12 ], 5) returned sum = 121 and index = 3 which is incorrect...
2 Comments
James Tursa
on 16 Aug 2019
Probably best if you open up a new Question. Also, we can't help you correct your code unless we see your code, so post your current code along with your Question.
Mukti Awad
on 18 Aug 2019
Code is here:
function [summa,index] = max_sum(v,n)
r = 1;
summa = 0;
index = 0;
if n > length(v)
summa = 0;
index = -1;
else
while n < numel(v)
sum(v(r:r+n-1));
r = r+1;
if sum(v(r:r+n-1)) == sum(v(r-1:r-1+n-1))
r=r-1;
break
elseif sum(v(r:r+n-1)) > sum(v(r+1:r+1+n-1))
break
end
end
end
index = r;
summa = sum(v(r:r+n-1));
end
Getting error:
Assessment: 0 of 2 Tests Passed
More Info
Assessment result: incorrect[1 2 3 4 5 4 3 2 1]
max_sum([ 1 2 3 4 5 4 3 2 1 ], 10) returned the following MATLAB error:
Index exceeds the number of array elements (9).
Assessment result: incorrectrandom vectors
Variable summa has an incorrect value.
max_sum([ -81 -77 -45 -68 7 85 -9 30 89 62 83 83 94 -77 52 43 -62 -76 -2 26 -80 ], 2) returned sum = 92 and index = 5 which is incorrect...
Categories
Find more on Matrix Indexing 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!