MATLAB - наибольшая сумма субвекторов с длиной "n" исходного вектора - PullRequest
0 голосов
/ 09 июля 2020

Работа с MATLAB. Мне нужно написать функцию с именем m_s, с v (вектор) и n в качестве входных аргументов и summa и индексом в качестве выходных аргументов, функция должна найти n последовательных элементов в заданном векторе, сумма которых равна наибольший, а также должен найти индекс первого элемента последовательности n. Я пробовал это, но возникает проблема, когда summa достигает максимума, проблема с моим кодом заключается в том, что, когда он достигает максимальной суммы, тогда summa2 начинает увеличиваться способом, отличным от ожидаемого, он дает сумму не последовательные числа. Когда пользователь дает больше n, чем длина вектора, функция должна возвращать: n=-1 и summa = 0. Также, когда n такое же число, как length(v), функция должна возвращать n=1 и summa = sum(v). Это мой код

function [summa index] = m_s(v,n)
    lv = length(v);
    times = lv - n; 
    if n > lv
        summa = 0;
        index = -1;
    elseif n == lv
        summa = sum(v);
        index = 1;
    else
        for i = 1:times
            sum1 = sum(v(i:n))
            sum2 = sum(v(i+1):(n+1))
            if sum1 < sum2
                summa = sum2;       
                index = i+1;
                n = n+1;           
            elseif sum1 > sum2         
                n = n+1;
            end                
        end        
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...