-
Notifications
You must be signed in to change notification settings - Fork 0
/
observ.m
45 lines (35 loc) · 814 Bytes
/
observ.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
function [Y,X]=observ(nT,A,Q,H,R,X0)
% Hidden Markov chain observed with additive noise
%
% Model :
% X(n+1) = A.X(n) + Gaussian(0,Q)
% Y(n) = H.X(n) + Gaussian(0,R)
% nT = time ( process observed on [0,nT] )
%
%
% Input:
% X0 = initial position (0 if not defined)
% A = nX x nX matrix
% H = nY x nX matrix
% Q = nX x nX covariance matrix
% R = nY x nY covariance matrix
%
% Result :
% Y = nY x nT vector
% X = nX x nT vector
[nY,nX]=size(H);
if nargin<6, X0 = zeros(nX,1); end;
% calcul des ecarts types
S = sqrtm(Q);
D = sqrtm(R);
% initialisation
X = zeros(nX,nT);
X(:,1) = X0;
Y = zeros(nY,nT);
Y(:,1) = [H*X0+D*randn(nY , 1 )] ;
for i=2:(nT)
%% etape de la chaine de markov
X(:,i) = A*X(:, i - 1 ) + S*randn(nX,1) ;
% observations bruitees
Y(:,i) = H*X(:, i) + D*randn(nY,1);
end;