Kalman Filter to track sine wave
Hi everyone,
currently I'm measuring the skin temperature to track it over time and get more information about the circadian rhythm, which follows a sine function and can be seen in the following plot for a 48h-period:

To get more reliable data I applied an Extended Kalman Filter (EKF) with following parameters:
% Dynamic state transition matrix in continous-time domain.
F = [0 1 0 0;
0 0 0 0;
0 0 0 0;
0 0 0 0]; % Noise effect matrix in continous-time domain.
L = [0 0 0;
1 0 0;
0 1 0;
0 0 1]; % Spectral power density of the white noise.
q1 = 0.2;
q2 = 0.1;
q3 = 0.2;
Qc = diag([q1 q2 q3]);where my state vector contains the sine curve's argument, it's angular velocity, amplitude and I also tried to tie in it's offset. In this case, the measurement model is
Y = a.*sin(f) + m;
% The Jacobian of the measure model
dY = [(a.*cos(f))' 0 (sin(f))' 1];and here's a plot of the estimated parameters:
I am using the Matlab toolbox EKF/UKF (see <http://becs.aalto.fi>) to process the model.
For me, only the offset (m; like Mesor) looks correctly estimated. Does anybody can say whether my model is wrong or whats my mistake? Thanks in advance!
Filip
In addition to this: without the fourth state the offset would be modeled as Gaussian white noise with zero mean. Therefore, to model the offset I added it as the fourth state variable. Is this approach right?
0 Comments
Answers (2)
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!