@@ -18,8 +18,8 @@ struct SteadyKalmanFilter <: StateEstimator
1818 D̂dm :: Matrix{Float64}
1919 f̂:: Function
2020 ĥ:: Function
21- Q̂:: Union{Diagonal{Float64}, Matrix{Float64}}
22- R̂:: Union{Diagonal{Float64}, Matrix{Float64}}
21+ Q̂:: Union{Diagonal{Float64, Vector{Float64} }, Matrix{Float64}}
22+ R̂:: Union{Diagonal{Float64, Vector{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
169169struct KalmanFilter <: StateEstimator
170170 model:: LinModel
171171 x̂:: Vector{Float64}
172- P̂:: Hermitian{Float64}
172+ P̂:: Hermitian{Float64, Matrix{Float64} }
173173 i_ym:: IntRangeOrVector
174174 nx̂:: Int
175175 nym:: Int
@@ -187,9 +187,9 @@ struct KalmanFilter <: StateEstimator
187187 D̂dm :: Matrix{Float64}
188188 f̂:: Function
189189 ĥ:: Function
190- P̂0:: Union{Diagonal{ Float64}, Hermitian {Float64}}
191- Q̂:: Union{Diagonal{Float64}, Matrix{Float64}}
192- R̂:: Union{Diagonal{Float64}, Matrix{Float64}}
190+ P̂0:: Hermitian{ Float64, Matrix {Float64}}
191+ Q̂:: Union{Diagonal{Float64, Vector{Float64} }, Matrix{Float64}}
192+ R̂:: Union{Diagonal{Float64, Vector{Float64} }, Matrix{Float64}}
193193 function KalmanFilter (model, i_ym, nint_ym, Asm, Csm, P̂0, Q̂, R̂)
194194 nx, ny = model. nx, model. ny
195195 nym, nyu = length (i_ym), ny - length (i_ym)
@@ -200,7 +200,8 @@ struct KalmanFilter <: StateEstimator
200200 f̂, ĥ, Â, B̂u, Ĉ, B̂d, D̂d = augment_model (model, As, Cs)
201201 Ĉm, D̂dm = Ĉ[i_ym, :], D̂d[i_ym, :] # measured outputs ym only
202202 x̂ = [copy (model. x); zeros (nxs)]
203- P̂ = Hermitian (Matrix (P̂0), :L )
203+ P̂0 = Hermitian (P̂0)
204+ P̂ = copy (P̂0)
204205 return new (
205206 model,
206207 x̂, P̂,
318319struct UnscentedKalmanFilter{M<: SimModel } <: StateEstimator
319320 model:: M
320321 x̂:: Vector{Float64}
321- P̂:: Hermitian{Float64}
322+ P̂:: Hermitian{Float64, Matrix{Float64} }
322323 i_ym:: IntRangeOrVector
323324 nx̂:: Int
324325 nym:: Int
@@ -329,13 +330,13 @@ struct UnscentedKalmanFilter{M<:SimModel} <: StateEstimator
329330 nint_ym:: Vector{Int}
330331 f̂:: Function
331332 ĥ:: Function
332- P̂0:: Union{Diagonal{ Float64}, Hermitian {Float64}}
333- Q̂:: Union{Diagonal{Float64}, Matrix{Float64}}
334- R̂:: Union{Diagonal{Float64}, Matrix{Float64}}
333+ 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} }}
335336 nσ:: Int
336337 γ:: Float64
337338 m̂:: Vector{Float64}
338- Ŝ:: Diagonal{Float64}
339+ Ŝ:: Diagonal{Float64, Vector{Float64} }
339340 function UnscentedKalmanFilter {M} (
340341 model:: M , i_ym, nint_ym, Asm, Csm, P̂0, Q̂, R̂, α, β, κ
341342 ) where {M<: SimModel }
@@ -348,7 +349,8 @@ struct UnscentedKalmanFilter{M<:SimModel} <: StateEstimator
348349 f̂, ĥ = augment_model (model, As, Cs)
349350 nσ, γ, m̂, Ŝ = init_ukf (nx̂, α, β, κ)
350351 x̂ = [copy (model. x); zeros (nxs)]
351- P̂ = Hermitian (Matrix (P̂0), :L )
352+ P̂0 = Hermitian (P̂0)
353+ P̂ = copy (P̂0)
352354 return new (
353355 model,
354356 x̂, P̂,
0 commit comments