@@ -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