-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmeasure_target.m
67 lines (51 loc) · 2.61 KB
/
measure_target.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Measure Target System %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% * Description: %
% - Generate a sensor measurement of the target system. %
% %
% * Inputs: %
% - x_curr: current system state, x(k) %
% - sys_model: system model structure %
% - Delta2: contraction matrix (optional) %
% %
% * Outputs: %
% - y_k: measurement, y(k) %
% - v_k: measurement noise signal, v(k) %
% - Delta2_k: contraction matrix %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [y_k,v_k,Delta2_k] = measure_target(x_curr,sys_model,Delta2)
% ======================================================================= %
% Generate uncertain parameter matrices
% ======================================================================= %
% Generate contraction (norm <= 1), if not given as argument
if (nargin < 3)
Delta2_k = unifrnd(-1,1);
else
Delta2_k = Delta2;
end
% Unpack sensing model matrices
C = sys_model.C;
D = sys_model.D;
R = sys_model.R;
M2 = sys_model.M2;
EC = sys_model.EC;
ED = sys_model.ED;
% Parameter uncertainty matrices
delta_C = M2 * Delta2_k * EC;
delta_D = M2 * Delta2_k * ED;
% Uncertain parameter matrices
C_r = C + delta_C;
D_r = D + delta_D;
% ======================================================================= %
% Generate noise signal
% ======================================================================= %
v_k = mvnrnd(zeros(size(R,1),1), R)';
% ======================================================================= %
% Generate measurement of the target system
% ======================================================================= %
y_k = C_r * x_curr + D_r * v_k;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end