The equations for the Kalman filtering are
IM = H*X;
IS = (R + H*P*H');
K = P*H'/IS;
X = X + K * (y-IM);
P = P - K*IS*K';
The covariance matrix in my application is of dimension 3 by 3 size because the there are 3 state variables that need to be estimated.
For data in the real domain, I initialized the covariance matrices $Q$ (process covaraince) and $P$ (prediction covariace) in Matlab as
P= 5*(eye(3,3))
Q = 0.001*(eye(3,3));
For the complex domain, I initialized $P$ and $Q$ as
P_real = 5*(eye(d,d));
P_imag = 5*(eye(d,d));
Q_real = eye(d,d)* 10^(-2);
Q_imag = eye(d,d)* 10^(-2);
P = P_real + sqrt(-1)*P_imag;
Q = Q_real + sqrt(-1)*Q_imag;
R
is a scalar real valued number.
Problem : The default operation in Matlab is complex conjugate represented by the operator (.) '
. I am using a toolbox which applies the above expression for Kalman filtering and there is no term conj()
present especially when evaluating the expression IS
, K
, P
. However, the toolbox never uses any (.).'
or (.).*
operators as well. When in complex domain, would the equations change to
IM = H*X
% no conjugate
IS = (R + conj(H)*P*ctranspose(H))
K = P*ctranspose(H)/IS;
X = X + K *(y - IM)
% here *
denotes the multiplication operation
P = P - conj(K)*IS*ctraspose(K)
where H
, X
, y
, P
are all complex valued.
Are these okay?