[791] | 1 | x = RV('x',2); |
---|
| 2 | fx.class = 'mlnorm<ldmat>'; |
---|
| 3 | fx.A = [1 -0.9; 1 -0.3]; |
---|
| 4 | fx.const = [0;0]; |
---|
| 5 | fx.R = [0.1 0.05; 0.05 0.1]; |
---|
| 6 | fx.rv = x; |
---|
| 7 | fx.rvc = RVtimes(x,-1); |
---|
| 8 | |
---|
| 9 | y = RV('y',2); |
---|
| 10 | fy.class = 'mlnorm<ldmat>'; |
---|
| 11 | fy.A = [1 0.5; -0.3 0]; |
---|
| 12 | fy.const = [0;0]; |
---|
| 13 | fy.R = 0.1*eye(2); |
---|
| 14 | fy.rv = y; |
---|
| 15 | fy.rvc = x; |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | %%%%%% Data generator |
---|
| 19 | DS.class = 'PdfDS'; |
---|
| 20 | DS.pdf.class = 'mprod'; |
---|
| 21 | DS.pdf.pdfs = {fy,fx}; |
---|
| 22 | |
---|
| 23 | Dt = simulator(DS); |
---|
| 24 | %%%%%% ARX estimator conditioned on frg |
---|
| 25 | |
---|
| 26 | A1.class = 'ARX'; |
---|
| 27 | A1.rv = y; |
---|
| 28 | A1.rgr = x ; |
---|
| 29 | A1.constant = 0; |
---|
| 30 | A1.options ='logbounds,logll'; |
---|
| 31 | A1.frg = 0.98; |
---|
| 32 | A1.name = 'A1'; |
---|
| 33 | |
---|
| 34 | %%%%%% Combining estimators in Marginalized particle filter |
---|
| 35 | E.class = 'MPF'; |
---|
| 36 | E.BM = A1; % ARX is the analytical part |
---|
| 37 | E.parameter_pdf = fx; % Random walk is the parameter evolution model |
---|
| 38 | E.res_threshold = 1.0; % resampling parameter |
---|
| 39 | E.n = 1000; % number of particles |
---|
| 40 | E.prior.class = 'enorm<ldmat>'; % prior on non-linear part |
---|
| 41 | E.prior.mu = [0 0]; % |
---|
| 42 | E.prior.R = 10*eye(2); % |
---|
| 43 | E.options ='logbounds,logll'; |
---|
| 44 | E.name = 'MPF'; |
---|
| 45 | |
---|
| 46 | exp.ndat = 1000; |
---|
| 47 | |
---|
| 48 | M=estimator(DS,{E},exp); |
---|
| 49 | |
---|
| 50 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
| 51 | % plot results |
---|
| 52 | ndat = size(M.DS_x,1); |
---|
| 53 | |
---|
| 54 | |
---|
| 55 | figure(1); |
---|
| 56 | subplot(4,1,1); |
---|
| 57 | plotestimates(fy.A(1,1)*ones(ndat,1), M.MPF_apost_mean_theta(:,1), M.MPF_apost_lb_theta(:,1), M.MPF_apost_ub_theta(:,1)); |
---|
| 58 | title(' Parameters C(1,1)') |
---|
| 59 | subplot(4,1,2); |
---|
| 60 | plotestimates(fy.A(1,2)*ones(ndat,1), M.MPF_apost_mean_theta(:,2), M.MPF_apost_lb_theta(:,2), M.MPF_apost_ub_theta(:,2)); |
---|
| 61 | title(' Parameters C(1,2)') |
---|
| 62 | subplot(4,1,3); |
---|
| 63 | plotestimates(fy.A(2,1)*ones(ndat,1), M.MPF_apost_mean_theta(:,3), M.MPF_apost_lb_theta(:,3), M.MPF_apost_ub_theta(:,3)); |
---|
| 64 | title(' Parameters C(2,1)') |
---|
| 65 | subplot(4,1,4); |
---|
| 66 | plotestimates(fy.A(2,2)*ones(ndat,1), M.MPF_apost_mean_theta(:,4), M.MPF_apost_lb_theta(:,4), M.MPF_apost_ub_theta(:,4)); |
---|
| 67 | title(' Parameters C(2,2)') |
---|
| 68 | |
---|
| 69 | |
---|