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
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
P. However, the toolbox never uses any
(.).* 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)
P are all complex valued.
Are these okay?