| | 129 | |
| | 130 | class UIpmsmCRBMz: public UIbuilder { |
| | 131 | public: |
| | 132 | UIpmsmCRBMz():UIbuilder("pmsmCRBMz"){}; |
| | 133 | bdmroot* build ( Setting &S ) const { |
| | 134 | diffbifn* IM; UIbuild(S["IM"],IM); |
| | 135 | diffbifn* OM; UIbuild(S["OM"],OM); |
| | 136 | |
| | 137 | //parameters |
| | 138 | pmsmCRBMz* E; E=new pmsmCRBMz; |
| | 139 | |
| | 140 | //statistics |
| | 141 | int dim=IM->dimension(); |
| | 142 | vec mu0; |
| | 143 | mat P0; |
| | 144 | if (S.exists("mu0")){mu0=getvec(S["mu0"]);}else{mu0=zeros(dim);}; |
| | 145 | if (S.exists("dP0")){P0=diag(getvec(S["dP0"]));}else{ |
| | 146 | if (S.exists("P0")){mu0=getmat(S["P0"],dim);}else{P0=eye(dim);}; |
| | 147 | } |
| | 148 | E->set_statistics(mu0,P0); |
| | 149 | |
| | 150 | E->set_parameters(IM, OM, diag(getvec(S["dQ"])), diag(getvec(S["dR"]))); |
| | 151 | |
| | 152 | //connect |
| | 153 | RV* drv; UIbuild(S["drv"],drv); |
| | 154 | E->set_drv(*drv); |
| | 155 | RV* rv; UIbuild(S["rv"],rv); |
| | 156 | E->set_rv(*rv); |
| | 157 | return E; |
| | 158 | } |
| | 159 | }; |
| | 160 | UIREGISTER ( UIpmsmCRBMz ); |