|
1 | 1 | classdef ExtendedKF < handle |
2 | 2 | properties |
3 | 3 |
|
4 | | - Xhistory |
| 4 | + predhistory |
| 5 | + truehistory |
5 | 6 | Plast |
6 | | - Xtrue |
7 | 7 | statetransitionfcn |
8 | 8 | measurementfcn |
9 | 9 | statej |
|
18 | 18 | state_dim |
19 | 19 | measurement_dim |
20 | 20 | hasadditivenoise |
| 21 | + measurementhistory |
21 | 22 | end |
22 | 23 |
|
23 | 24 | methods |
|
37 | 38 |
|
38 | 39 | self.state_dim = size(self.statecovariance(:, 1)); |
39 | 40 | self.measurement_dim = size(self.measurementcovariance(:, 1)); |
40 | | - self.Xtrue(:, 1) = initial_x; |
41 | | - self.Xhistory = zeros(self.state_dim); |
| 41 | + self.truehistory(:, 1) = initial_x; |
| 42 | + self.predhistory = zeros(self.state_dim); |
| 43 | + self.measurementhistory = zeros(self.measurement_dim); |
42 | 44 | self.k = 1; |
43 | 45 | self.hasadditivenoise = true; |
44 | 46 | self.Plast = eye(self.state_dim(1)); |
|
51 | 53 | %create plant noise |
52 | 54 | self.vk = sqrt(self.statecovariance)*randn(self.state_dim(1), 1); |
53 | 55 | %create noisy plant state: REFERENCE VALUE |
54 | | - xtrue_last = self.Xtrue(:, end); |
| 56 | + xtrue_last = self.predhistory(:, end); |
55 | 57 | xtrue = self.statetransitionfcn(xtrue_last, self.T); |
56 | 58 | self.xk = xtrue + self.vk; |
57 | 59 |
|
58 | | - xhat_last = self.Xhistory(:, end); |
| 60 | + xhat_last = self.predhistory(:, end); |
59 | 61 | F = self.statej(xhat_last, self.T); |
60 | 62 | Xpred = self.statetransitionfcn(xhat_last, self.T); |
61 | 63 | Ppred = F*(self.Plast)*F' + self.statecovariance; |
62 | 64 |
|
63 | 65 | %save the new values: |
64 | 66 | self.k = self.k+1; |
65 | 67 | self.Plast = Ppred; |
66 | | - self.Xhistory(:, self.k) = Xpred; |
67 | | - self.Xtrue(:, self.k) = xtrue; |
| 68 | + self.predhistory(:, self.k) = Xpred; |
| 69 | + self.truehistory(:, self.k) = xtrue; |
68 | 70 |
|
69 | 71 |
|
70 | 72 | end |
|
76 | 78 | yk = self.measurementfcn(self.xk, self.T) + self.wk; |
77 | 79 |
|
78 | 80 | %correcting measurement |
79 | | - Xpred = self.Xhistory(:, self.k); |
| 81 | + Xpred = self.predhistory(:, self.k); |
80 | 82 | H = self.measurementj(Xpred, self.T); |
81 | 83 | Ypred = self.measurementfcn(Xpred); |
82 | 84 | Sk = H*self.Plast*H' + self.measurementcovariance; |
|
90 | 92 |
|
91 | 93 |
|
92 | 94 | %overwrite to existing values: |
| 95 | +% self.measurementhistory(:, self.k) = yk; |
93 | 96 | self.Plast = Pcorr; |
94 | | - self.Xhistory(:, self.k) = Xcorr; |
| 97 | + self.predhistory(:, self.k) = Xcorr; |
95 | 98 |
|
96 | 99 | end |
97 | 100 |
|
|
0 commit comments