Как получить накопительную сумму, используя cumsum в MATLAB? - PullRequest
0 голосов
/ 03 мая 2018

Это код

for i = 1 : 5
    b = i;
    a=cumsum(b);

end

fprintf('%f \n', a);

Я ожидал 1 + 2 + 3 + 4 + 5 = 15, поэтому в конце напечатал бы 15.

Но выводится 5.000000.

Если я кодирую "a = cumsum (b)" вне цикла for, он не будет рассчитан

Как я могу получить желаемое значение 1 + 2 + 3 + 4 + 5?

Спасибо тебе

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Это не так, как cumsum работает. Требуется совокупная сумма массива, который приведенный ниже пример может объяснить лучше

a = 1:5;
b = cumsum(a); % b = [1, 3, 6, 10, 15]
c = sum(a) % add up all the elements c = 15

Это помогает?

0 голосов
/ 03 мая 2018

cumsum выполняет что-то вроде интегрирования, где каждый элемент выходных данных является суммой всех элементов до этой позиции (включая) входного вектора.

Ваш код не работает, потому что вы передаете одно значение в cumsum, и нет механизма, с помощью которого сохраняется предыдущий результат, так что в итоге вы получите только одно значение, которое является последним - 5.

Вам не нужен ни цикл, ни даже cumsum - просто напишите sum(1:5), чтобы получить желаемый результат.

...