Write a function max_sum that takes v a row vector of numbers & n,a positive integer as inputs.The function needs to find n consecutive elements of v whose sum is largest poss
Afficher commentaires plus anciens
I write this code for the qst in desciption
function [summa,index] = max_sum(v,n)
l=length(v);
if n>length(v)
summa =0
index=-1
else
m=v(1:n)
for ii=1:l-n+1
vect=v(ii:ii+n-1)
if sum(m)<sum(vect)
m=vect
end
end
summa = sum(m)
index = m(1)
end
end
and it's working for all exemple in description but for long vector like in qst 2 the result it's false

the problem is the rihjt response it's my, bcz I check it and I don't know if someone can help me if I already didn't undestand the problem
1 commentaire
Réponses (1)
You can use the 'conv' function to compute the sum of every window of length n efficienty:
function [sum, idx] = max_sum(v, n)
% Finds n consecutive elements in v with the largest sum.
if n > length(v)
error('n must not exceed the length of v');
end
s = conv(v, ones(1, n), 'valid');
% Sliding sum
[sum, idx] = max(s);
end
v = [1 3 2 5 6 2 1];
n = 3;
[sum, idx] = max_sum(v, n)
For more information regarding the 'conv' function, refer to the following documentation: https://www.mathworks.com/help/matlab/ref/conv.html
Catégories
En savoir plus sur Get Started with MATLAB dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!