@@ -123,11 +123,6 @@ struct MovingHorizonEstimator{
123123 validate_kfcov(nym, nx̂, Q̂, R̂, P̂_0)
124124 lastu0 = zeros(NT, nu)
125125 x̂0 = [zeros(NT, model. nx); zeros(NT, nxs)]
126- P̂_0 = Hermitian(P̂_0, :L)
127- Q̂, R̂ = Hermitian(Q̂, :L), Hermitian(R̂, :L)
128- invP̄ = Hermitian(inv(P̂_0), :L)
129- invQ̂_He = Hermitian(repeatdiag(inv(Q̂), He), :L)
130- invR̂_He = Hermitian(repeatdiag(inv(R̂), He), :L)
131126 r = direct ? 0 : 1
132127 E, G, J, B, ex̄, Ex̂, Gx̂, Jx̂, Bx̂ = init_predmat_mhe(
133128 model, He, i_ym, Â, B̂u, Ĉm, B̂d, D̂dm, x̂op, f̂op, r
@@ -146,10 +141,18 @@ struct MovingHorizonEstimator{
146141 nD0 = direct ? nd* (He+ 1 ) : nd* He
147142 U0, D0 = zeros(NT, nu* He), zeros(NT, nD0)
148143 Ŵ = zeros(NT, nx̂* He)
144+ buffer = StateEstimatorBuffer{NT}(nu, nx̂, nym, ny, nd)
145+ P̂_0 = Hermitian(P̂_0, :L)
146+ Q̂, R̂ = Hermitian(Q̂, :L), Hermitian(R̂, :L)
147+ P̂_0 = Hermitian(P̂_0, :L)
148+ invP̄ = inv_cholesky!(buffer. P̂, P̂_0)
149+ invQ̂ = inv_cholesky!(buffer. Q̂, Q̂)
150+ invR̂ = inv_cholesky!(buffer. R̂, R̂)
151+ invQ̂_He = Hermitian(repeatdiag(invQ̂, He), :L)
152+ invR̂_He = Hermitian(repeatdiag(invR̂, He), :L)
149153 x̂0arr_old = zeros(NT, nx̂)
150154 P̂arr_old = copy(P̂_0)
151155 Nk = [0 ]
152- buffer = StateEstimatorBuffer{NT}(nu, nx̂, nym, ny, nd)
153156 corrected = [false ]
154157 estim = new{NT, SM, JM, CE}(
155158 model, optim, con, covestim,
0 commit comments