Сумма последовательных чисел для вектора строки и сохранения их в этой позиции - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть 1e6 значений P. Я хочу написать код, который находит среднее значение для набора случайных чисел и сохраняет их в таком порядке, например.Вторая позиция вектора позволяет вызывать mu_P должна быть p1 + p2 / 2.Десятая позиция P10 должна быть суммой (от P1 до P10) / 10.Позиция 1e6 должна быть (от P1 до P1E6) /1E6.Я новичок в matlab

n_r=1e6;
p=randn(n_r,1);
mu_p= zeros(n_r,1);
for i=2:n_r
    mu_p(i)=p(i)+p(i-1)/i;
end 

Мой вывод только суммирует текущее и предыдущее число на каждом шаге, и те, которые не учитывают все предыдущие числа

1 Ответ

0 голосов
/ 19 сентября 2019

В вашем коде вы просто берете средние из двух последовательных чисел из p и сохраняете их в mu_p, что является совершенно неверным выводом, который вы получаете.

Для среднего значения всех чиселиз индекса [1 - n] я бы предложил следующее.

mu_p = cumsum(p)    % built-in function for cumulative sum. 
denom = 1:n_r    % denominator for each index in mu_p = # terms till the index
mu_p = mu_p ./ denom    % elementwise division

Пример

Ввод: p = [1,2,3,4,5,6,7,8,9];

Вывод: mu_p = 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...