
273Implicit Parallelization (Vectorization and Indexing)
% Slow recursive version
fibonacci = [0, 1];
for idx = 3 : 1000
fibonacci(idx) = fibonacci(idx-1) + fibonacci(idx-2);
end
⇨ Elapsed time is 0.000562 seconds.
% Vectorized version: 10x faster
x = [0,1,zeros(1,98)];
fibonacci = filter(1, [1,-1,-1], x);
⇨ Elapsed time is 0.000059 seconds.
In another case, using lter improved a loop performance by 180× (!):
836
nobs = 1e5; % number of observations
p = 2; % number of lags
ro = [0.1 0.5]; % autoregressive coefficients
noise = rand(nobs,1)-p; % white noise
pseudoX = zeros(nobs,1); % vector to fill in
pseudoX(1:p) =