我在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