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?
Answers (2)
0 votes
0 votes
Categories
Find more on State Estimation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!