我在MATLAB以下循環:矢量化這個循環
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.02s。除非你的實際問題更大,否則我認爲這是不值得的。 – Daniel
你爲什麼要引導它? – IKavanagh