diff --git a/mex/sources/block_kalman_filter/block_kalman_filter.cc b/mex/sources/block_kalman_filter/block_kalman_filter.cc index 147e016cf6223952a4a98dea3f863bca5854dd48..08fb93e5e4eb91b8d83eb26e9438ab930686ee52 100644 --- a/mex/sources/block_kalman_filter/block_kalman_filter.cc +++ b/mex/sources/block_kalman_filter/block_kalman_filter.cc @@ -304,7 +304,7 @@ mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) double dF = 0.0; // det(F). mxArray* p_tmp = mxCreateDoubleMatrix(n, n_state, mxREAL); double *tmp = mxGetPr(p_tmp); - mxArray* p_tmp1 = mxCreateDoubleMatrix(n, pp, mxREAL); + mxArray* p_tmp1 = mxCreateDoubleMatrix(n, n_shocks, mxREAL); double *tmp1 = mxGetPr(p_tmp1); int t = 0; // Initialization of the time index. mxArray* plik = mxCreateDoubleMatrix(smpl, 1, mxREAL); @@ -324,11 +324,11 @@ mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) /*compute QQ = R*Q*transpose(R)*/ // Variance of R times the vector of structural innovations.; // tmp = R * Q; for (int i = 0; i < n; i++) - for (int j = 0; j < pp; j++) + for (int j = 0; j < n_shocks; j++) { double res = 0.0; for (int k = 0; k < n_shocks; k++) - res += R[i + k * n] * Q[j * pp + k]; + res += R[i + k * n] * Q[j * n_shocks + k]; tmp1[i + j * n] = res; } @@ -514,7 +514,6 @@ mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) for (int i = 0; i < pp; i++) res += v_pp[i] * v[i]; - /*lik[t] = log(dF) + res;*/ lik[t] = (log(dF) + res + pp * log(2.0*pi))/2; if (t + 1 >= start) LIK += lik[t];