Skip to content

Commit 5a3f841

Browse files
committed
additive noise process conditional added
1 parent 5bf1bf9 commit 5a3f841

7 files changed

+445
-509
lines changed
180 Bytes
Binary file not shown.

Extended-Kalman-Filter-Algorithm.prj

+33-10
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<deployment-project plugin="plugin.toolbox" plugin-version="1.0">
2-
<configuration file="C:\Users\DevOps Engineer\Documents\GitHub\Extended-Kalman-Filter-Algorithm\Extended-Kalman-Filter-Algorithm.prj" location="C:\Users\DevOps Engineer\Documents\GitHub\Extended-Kalman-Filter-Algorithm" name="Extended-Kalman-Filter-Algorithm" target="target.toolbox" target-name="Package Toolbox">
2+
<configuration file="E:\HU repository\OneDrive - Habib University\Academics-HU\Summers 2021\Object Tracking\Simulations\Extended-Kalman-Filter-Algorithm\Extended-Kalman-Filter-Algorithm.prj" location="E:\HU repository\OneDrive - Habib University\Academics-HU\Summers 2021\Object Tracking\Simulations\Extended-Kalman-Filter-Algorithm" name="Extended-Kalman-Filter-Algorithm" target="target.toolbox" target-name="Package Toolbox">
33
<param.appname>Extended-Kalman-Filter-Algorithm</param.appname>
4-
<param.authnamewatermark>Mehdi Raza Khorasani</param.authnamewatermark>
5-
<param.email>mk05198@st.habib.edu.pk</param.email>
6-
<param.company>Habib University</param.company>
4+
<param.authnamewatermark />
5+
<param.email />
6+
<param.company />
77
<param.summary />
88
<param.description />
99
<param.screenshot />
@@ -13,21 +13,31 @@
1313
<param.products.id />
1414
<param.products.version />
1515
<param.platforms />
16-
<param.guid>a039b9e3-5def-43ef-9ae7-bcbefdaa8332</param.guid>
16+
<param.guid>cedafdb9-6a59-4c93-a3b5-ddf093b20511</param.guid>
1717
<param.exclude.filters>% List files contained in your toolbox folder that you would like to exclude
1818
% from packaging. Excludes should be listed relative to the toolbox folder.
1919
% Some examples of how to specify excludes are provided below:
2020
%
2121
% A single file in the toolbox folder:
22+
.git
23+
simulation
2224
.gitignore
2325
LICENSE
26+
Report
2427
.gitattributes
2528
README.md
2629
%
2730
% A single file in a subfolder of the toolbox folder:
28-
.git
29-
simulation
30-
Report
31+
% example/.svn
32+
%
33+
% All files in a subfolder of the toolbox folder:
34+
% example/*
35+
%
36+
% All files of a certain name in all subfolders of the toolbox folder:
37+
% **/.svn
38+
%
39+
% All files matching a pattern in all subfolders of the toolbox folder:
40+
% **/*.bak
3141
%</param.exclude.filters>
3242
<param.exclude.pcodedmfiles>true</param.exclude.pcodedmfiles>
3343
<param.examples />
@@ -105,12 +115,25 @@ Report
105115
<fileset.depfun.excluded />
106116
<fileset.package />
107117
<build-deliverables>
108-
<file location="${PROJECT_ROOT}" name="Extended-Kalman-Filter-Algorithm.mltbx" optional="false">C:\Users\DevOps Engineer\Documents\GitHub\Extended-Kalman-Filter-Algorithm\Extended-Kalman-Filter-Algorithm.mltbx</file>
118+
<file location="${PROJECT_ROOT}" name="Extended-Kalman-Filter-Algorithm.mltbx" optional="false">E:\HU repository\OneDrive - Habib University\Academics-HU\Summers 2021\Object Tracking\Simulations\Extended-Kalman-Filter-Algorithm\Extended-Kalman-Filter-Algorithm.mltbx</file>
109119
</build-deliverables>
110120
<workflow />
111121
<matlab>
112122
<root>C:\Program Files\MATLAB\R2021a</root>
113-
<toolboxes />
123+
<toolboxes>
124+
<toolbox name="fixedpoint" />
125+
<toolbox name="neuralnetwork" />
126+
</toolboxes>
127+
<toolbox>
128+
<fixedpoint>
129+
<enabled>true</enabled>
130+
</fixedpoint>
131+
</toolbox>
132+
<toolbox>
133+
<neuralnetwork>
134+
<enabled>true</enabled>
135+
</neuralnetwork>
136+
</toolbox>
114137
</matlab>
115138
<platform>
116139
<unix>false</unix>

ExtendedKF.m

+9-8
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
%constructor of class
2727
function self = ExtendedKF(statetransition_f, measurement_f,...
2828
state_j, measurement_j, state_covariance,...
29-
measurement_covariance, sampling_time, initial_x)
30-
if nargin == 8
29+
measurement_covariance, sampling_time, initial_x, additivenoise)
30+
if nargin == 9
3131
self.statetransitionfcn = statetransition_f;
3232
self.measurementfcn = measurement_f;
3333
self.statej = state_j;
@@ -42,7 +42,7 @@
4242
self.predhistory = zeros(self.state_dim);
4343
self.measurementhistory = zeros(self.measurement_dim);
4444
self.k = 1;
45-
self.hasadditivenoise = true;
45+
self.hasadditivenoise = additivenoise;
4646
self.Plast = eye(self.state_dim(1));
4747
end
4848

@@ -54,12 +54,13 @@
5454
self.vk = sqrt(self.statecovariance)*randn(self.state_dim(1), 1);
5555
%create noisy plant state: REFERENCE VALUE
5656
xtrue_last = self.predhistory(:, end);
57-
xtrue = self.statetransitionfcn(xtrue_last, self.T);
58-
self.xk = xtrue + self.vk;
57+
58+
xtrue = self.statetransitionfcn(xtrue_last, self.T, 0);
59+
self.xk = self.statetransitionfcn(xtrue_last, self.T, self.vk);
5960

6061
xhat_last = self.predhistory(:, end);
6162
F = self.statej(xhat_last, self.T);
62-
Xpred = self.statetransitionfcn(xhat_last, self.T);
63+
Xpred = self.statetransitionfcn(xhat_last, self.T, 0);
6364
Ppred = F*(self.Plast)*F' + self.statecovariance;
6465

6566
%save the new values:
@@ -75,12 +76,12 @@
7576
%create measurement noise
7677
self.wk = sqrt(self.measurementcovariance)*randn(self.measurement_dim(1), 1);
7778
%create true measurement
78-
yk = self.measurementfcn(self.xk, self.T) + self.wk;
79+
yk = self.measurementfcn(self.xk, self.T, self.wk);
7980

8081
%correcting measurement
8182
Xpred = self.predhistory(:, self.k);
8283
H = self.measurementj(Xpred, self.T);
83-
Ypred = self.measurementfcn(Xpred);
84+
Ypred = self.measurementfcn(Xpred, self.T, 0);
8485
Sk = H*self.Plast*H' + self.measurementcovariance;
8586
Kk = self.Plast*H'*inv(Sk);
8687

simulation/measurement_function.m

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
function yk = measurement_function(xk, T)
1+
function yk = measurement_function(xk, T, noise)
22
x = xk(1);
33
y = xk(2);
44
rho = sqrt(x^2 + y^2);
55

6-
yk = [rho; atan(y/x)];
6+
yk = [rho; atan(y/x)] + noise;
77
end
88

0 commit comments

Comments
 (0)