@@ -556,13 +556,13 @@ prediction horizon ``H_p``.
556556```jldoctest
557557julia> mpc = LinMPC(KalmanFilter(LinModel(ss(0.1, 0.5, 1, 0, 4.0)), σR=[√25]), Hp=1, Hc=1);
558558
559- julia> mpc.estim.model.A[], mpc.estim.R̂[], mpc.M_Hp[]
560- (0.1, 25.0, 1.0)
559+ julia> mpc.estim.model.A[1 ], mpc.estim.R̂[1 ], mpc.M_Hp[1], mpc.Ñ_Hc[1 ]
560+ (0.1, 25.0, 1.0, 0.1 )
561561
562- julia> setmodel!(mpc, LinModel(ss(0.42, 0.5, 1, 0, 4.0)); R̂=[9], M_Hp=[0 ]);
562+ julia> setmodel!(mpc, LinModel(ss(0.42, 0.5, 1, 0, 4.0)); R̂=[9], M_Hp=[10], Nwt=[0.666 ]);
563563
564- julia> mpc.estim.model.A[], mpc.estim.R̂[], mpc.M_Hp[]
565- (0.42, 9.0, 0.0 )
564+ julia> mpc.estim.model.A[1 ], mpc.estim.R̂[1 ], mpc.M_Hp[1], mpc.Ñ_Hc[1 ]
565+ (0.42, 9.0, 10.0, 0.666 )
566566```
567567"""
568568function setmodel! (
@@ -587,9 +587,10 @@ function setmodel!(
587587 mpc. M_Hp[i, i] = Mwt[(i- 1 ) % ny + 1 ]
588588 end
589589 elseif ! isnothing (M_Hp)
590+ M_Hp = to_hermitian (M_Hp)
590591 nŶ = ny* Hp
591592 size (M_Hp) == (nŶ, nŶ) || throw (ArgumentError (" M_Hp size should be ($nŶ , $nŶ )" ))
592- mpc. M_Hp .= to_hermitian ( M_Hp)
593+ mpc. M_Hp .= M_Hp
593594 end
594595 if isnothing (Ñ_Hc) && ! isnothing (Nwt)
595596 size (Nwt) == (nu,) || throw (ArgumentError (" Nwt should be a vector of length $nu " ))
@@ -598,9 +599,10 @@ function setmodel!(
598599 mpc. Ñ_Hc[i, i] = Nwt[(i- 1 ) % nu + 1 ]
599600 end
600601 elseif ! isnothing (Ñ_Hc)
602+ Ñ_Hc = to_hermitian (Ñ_Hc)
601603 nΔŨ = nu* Hc+ nϵ
602604 size (Ñ_Hc) == (nΔŨ, nΔŨ) || throw (ArgumentError (" Ñ_Hc size should be ($nΔŨ , $nΔŨ )" ))
603- mpc. Ñ_Hc .= to_hermitian ( Ñ_Hc)
605+ mpc. Ñ_Hc .= Ñ_Hc
604606 end
605607 if isnothing (L_Hp) && ! isnothing (Lwt)
606608 size (Lwt) == (nu,) || throw (ArgumentError (" Lwt should be a vector of length $nu " ))
@@ -609,9 +611,10 @@ function setmodel!(
609611 mpc. L_Hp[i, i] = Lwt[(i- 1 ) % nu + 1 ]
610612 end
611613 elseif ! isnothing (L_Hp)
614+ L_Hp = to_hermitian (L_Hp)
612615 nU = nu* Hp
613616 size (L_Hp) == (nU, nU) || throw (ArgumentError (" L_Hp size should be ($nU , $nU )" ))
614- mpc. L_Hp .= to_hermitian ( L_Hp)
617+ mpc. L_Hp .= L_Hp
615618 end
616619 setmodel_controller! (mpc, x̂op_old, M_Hp, Ñ_Hc, L_Hp)
617620 return mpc
0 commit comments