dynare/tests/kalman/likelihood/simul_state_space_model.m

25 lines
765 B
Matlab

function observed_data = simul_state_space_model(T,R,Q,mf,nobs,H)
pp = length(mf);
mm = length(T);
rr = length(Q);
upper_cholesky_Q = chol(Q);
if nargin>5
upper_cholesky_H = chol(H);
end
state_data = zeros(mm,1);
if (nargin==5)
for t = 1:nobs
state_data = T*state_data + R* upper_cholesky_Q * randn(rr,1);
observed_data(:,t) = state_data(mf);
end
elseif (nargin==6)
for t = 1:nobs
state_data = T*state_data + R* upper_cholesky_Q * randn(rr,1);
observed_data(:,t) = state_data(mf) + upper_cholesky_H * randn(pp,1);
end
else
error('simul_state_space_model:: I don''t understand what you want!!!')
end