root/library/tests/LQG_test.cpp @ 622

Revision 605, 1.1 kB (checked in by smidl, 15 years ago)

StateCanonical? = StateSpace? model with connection to ARX models

Line 
1#define BDMLIB
2#include "mat_checks.h"
3#include "design/ctrlbase.h"
4
5using namespace bdm;
6
7TEST(test_LQG) {
8        LQG reg;
9        shared_ptr<StateSpace<fsqmat> > stsp=new StateSpace<fsqmat>;
10        // 2 x 1 x 1
11        stsp-> set_parameters(eye(2), ones(2,1), ones(1,2), ones(1,1), /* Q,R */ eye(2), eye(1));
12        reg.set_system(stsp); // A, B, C
13        reg.set_control_parameters(eye(1), eye(1),  vec_1(1.0), 6); //Qy, Qu, horizon
14
15        reg.redesign();
16        double reg_apply=reg.apply("0.5, 1.1","0.0")(0); /*convert vec to double*/
17        CHECK_CLOSE(reg_apply, -0.248528137234392, 0.0001);
18}
19
20TEST(test_to_state) {
21        mlnorm<fsqmat> ml;
22        mat A="1.1, 2.3";
23        ml.set_parameters(A, vec_1(1.3), eye(1));
24        RV yr=RV("y",1);
25        RV ur=RV("u",1);
26        ml.set_rv(yr);
27        yr.t_plus(-1);
28        ml.set_rvc(concat(yr, ur));
29       
30        shared_ptr<StateCanonical > Stsp=new StateCanonical;
31        Stsp->connect_mlnorm(ml);
32       
33        /* results from
34        [A,B,C,D]=tf2ss([2.3 0],[1 -1.1])
35        */
36        CHECK_CLOSE_EX(Stsp->_A().get_row(0), vec("1.1"), 0.0001);
37        CHECK_CLOSE_EX(Stsp->_C().get_row(0), vec("2.53"), 0.0001);
38        CHECK_CLOSE_EX(Stsp->_D().get_row(0), vec("2.30"), 0.0001);
39}
40
Note: See TracBrowser for help on using the browser.