00001
00013 #ifndef ARX_UI_H
00014 #define ARX_UI_H
00015
00016
00017 #include "arx.h"
00018 #include "stat/loggers_ui.h"
00019
00038 class UIARX : public UIbuilder {
00039 public:
00040 UIARX() :UIbuilder ( "ARXest" ) {};
00041 bdmroot* build ( Setting &S ) const {
00042 int ylen = S["ychns"].getLength();
00043 int rgrlen = S["rgrid"].getLength();
00044
00045 RV yrv;
00046 RV rrv;
00047 int i;
00048 for ( i=0;i<ylen; i++ ) {yrv.add ( RV ( "y"+num2str(i),i+1 ));}
00049
00050 Setting& ids=S["rgrid"];
00051 Setting& del=S["delays"];
00052
00053 for ( int i=0;i<ids.getLength(); i++ ) {
00054 rrv.add (RV("rgr",ids[i],1,del[i]));
00055 }
00056
00057
00058 mat V0;
00059 if ( S.exists ( "dV0" ) ) {
00060 V0=diag ( getvec(S["dV0"]) );
00061 }
00062 else {
00063 V0=concat ( 1e-3*ones ( ylen ), 1e-5*ones ( rgrlen ) );
00064 }
00065 double nu0;
00066 if ( S.exists ( "nu0" ) ) {
00067 nu0=double(S["nu0"]);
00068 }
00069 else {
00070 nu0 = rgrlen+ylen+2;
00071 }
00072 double frg;
00073 if ( S.exists ( "frg" ) ) {
00074 frg = S["frg"];
00075 }
00076 else {
00077 frg = 1.0;
00078 }
00079 RV thr("{theta r }", vec_2(rgrlen*ylen, ylen*ylen));
00080 ARX* A=new ARX (thr, V0, nu0, frg);
00081 A->set_drv(concat(yrv,rrv));
00082
00083 return A;
00084 };
00085 };
00086
00087 UIREGISTER ( UIARX );
00088
00089 #endif // DS_UI_H