Я следующий цикл в MATLAB:Vectorize этот цикл
n = 20000
rho=0.9;
sigma=[0.1 0.2 0.3];
epsilon = normrnd(0,1, 3, n);
z = NaN(1,n);
z(1,1) = 0;
for i=2:n
z(1,i) = rho * z(1,i-1) + sigma* epsilon(:,i);
end
Я пытался векторизации его, выполнив:
z(1,2:end) = rho * z(1,1:end-1) + sigma * epsilon
Это не сработало. Я понимаю, что проблема в том, что этот бит: z(1,2:end) = rho * z(1,1:end-1)
не является рекурсивным.
Как я могу это решить?
Проблема в том, что каждый элемент зависит от предыдущего элемента, отсюда и требование цикла. Возможно, 'bsxfun' может его решить, но для рекурсивных функций я всегда использую цикл. – Adriaan
Это очень сложно для векторизации, кроме того, цикл for очень быстрый. В моей системе пример занимает менее 0,02. Если ваша фактическая проблема намного больше, я не думаю, что это того стоит. – Daniel
Зачем вы хотите его прорисовать? – IKavanagh