@@ -18,8 +18,8 @@ struct SteadyKalmanFilter <: StateEstimator
1818 D̂dm :: Matrix{Float64}
1919 f̂:: Function
2020 ĥ:: Function
21- Q̂:: Union{Diagonal{ Float64, Vector{Float64}} , Matrix{Float64}}
22- R̂:: Union{Diagonal{ Float64, Vector{Float64}} , Matrix{Float64}}
21+ Q̂:: Hermitian{ Float64, Matrix{Float64}}
22+ R̂:: Hermitian{ Float64, Matrix{Float64}}
2323 K:: Matrix{Float64}
2424 function SteadyKalmanFilter (model, i_ym, nint_ym, Asm, Csm, Q̂, R̂)
2525 nx, ny = model. nx, model. ny
@@ -39,6 +39,8 @@ struct SteadyKalmanFilter <: StateEstimator
3939 " parameter or use the time-varying KalmanFilter." )
4040 end
4141 end
42+ Q̂ = Hermitian (Q̂, :L )
43+ R̂ = Hermitian (R̂, :L )
4244 x̂ = [copy (model. x); zeros (nxs)]
4345 return new (
4446 model,
@@ -188,8 +190,8 @@ struct KalmanFilter <: StateEstimator
188190 f̂:: Function
189191 ĥ:: Function
190192 P̂0:: Hermitian{Float64, Matrix{Float64}}
191- Q̂:: Union{Diagonal{ Float64, Vector{Float64}} , Matrix{Float64}}
192- R̂:: Union{Diagonal{ Float64, Vector{Float64}} , Matrix{Float64}}
193+ Q̂:: Hermitian{ Float64, Matrix{Float64}}
194+ R̂:: Hermitian{ Float64, Matrix{Float64}}
193195 function KalmanFilter (model, i_ym, nint_ym, Asm, Csm, P̂0, Q̂, R̂)
194196 nx, ny = model. nx, model. ny
195197 nym, nyu = length (i_ym), ny - length (i_ym)
@@ -200,7 +202,9 @@ struct KalmanFilter <: StateEstimator
200202 f̂, ĥ, Â, B̂u, Ĉ, B̂d, D̂d = augment_model (model, As, Cs)
201203 Ĉm, D̂dm = Ĉ[i_ym, :], D̂d[i_ym, :] # measured outputs ym only
202204 x̂ = [copy (model. x); zeros (nxs)]
203- P̂0 = Hermitian (P̂0)
205+ P̂0 = Hermitian (P̂0, :L )
206+ Q̂ = Hermitian (Q̂, :L )
207+ R̂ = Hermitian (R̂, :L )
204208 P̂ = copy (P̂0)
205209 return new (
206210 model,
@@ -331,8 +335,8 @@ struct UnscentedKalmanFilter{M<:SimModel} <: StateEstimator
331335 f̂:: Function
332336 ĥ:: Function
333337 P̂0:: Hermitian{Float64, Matrix{Float64}}
334- Q̂:: Union{Diagonal{Float64, Vector{Float64}}, Hermitian{Float64, Matrix{Float64} }}
335- R̂:: Union{Diagonal{Float64, Vector{Float64}}, Hermitian{Float64, Matrix{Float64} }}
338+ Q̂:: Hermitian{Float64, Matrix{Float64}}
339+ R̂:: Hermitian{Float64, Matrix{Float64}}
336340 nσ:: Int
337341 γ:: Float64
338342 m̂:: Vector{Float64}
@@ -349,7 +353,9 @@ struct UnscentedKalmanFilter{M<:SimModel} <: StateEstimator
349353 f̂, ĥ = augment_model (model, As, Cs)
350354 nσ, γ, m̂, Ŝ = init_ukf (nx̂, α, β, κ)
351355 x̂ = [copy (model. x); zeros (nxs)]
352- P̂0 = Hermitian (P̂0)
356+ P̂0 = Hermitian (P̂0, :L )
357+ Q̂ = Hermitian (Q̂, :L )
358+ R̂ = Hermitian (R̂, :L )
353359 P̂ = copy (P̂0)
354360 return new (
355361 model,
0 commit comments