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!