# How to determine initial values in Kalman Filter

I have EEG signal and exract PSD feature from it, then must apply it a noise reduction algorithm, I used Kalman filter,

1. but the output signal in the paper is much smoother than my output and

2. vertical axis is different in my case

I think that is because of Kalman filter initialization; initial state and predict.

Here is my output and paper output.

Here is MATLAB code:

N = length(z);          % number of Klamn filter iterations
Qfactor = 1;            % process noise mult factor
Rfactor = 1;          % measurement noise mult factor
F = [ 1   2            % update matrix
0   1 ];
H = [ 1   0 ];            % measurement matrix
sigmaQ = 5e-5;
sigmaR = 1;
Q = sigmaQ^2 * [ 8/3  2     % process noise covariance matrix
2   2 ];
R = sigmaR^2 * [ 1 ];         % measurement noise covariance
P = zeros(2, 2, N);
x = zeros(2, N);
x(:,1) = [ 0
0 ];
P(:,:,1) = Q;

for i=2:N
[xpred, Ppred] = predict(x(:,i-1), P(:,:,i-1), F, Q);
[nu, S] = innovation(xpred, Ppred, z(i), H, R);
[x(:,i), P(:,:,i)] = innovation_update(xpred, Ppred, nu, S, H);
end


plot(x(1,2:N),'b');

The functions:

• Prediction

function [xpred, Ppred] = predict(x, P, F, Q)
xpred = F * x;
Ppred = F * P * F' + Q;
• Inovation :

function [nu, S] = innovation(xpred, Ppred, z, H, R)
nu = z - H * xpred;                   %% innnvoation
S = R + H * Ppred * H';                 %% innovation covariance

• and Inovation update :

function [xnew, Pnew] = innovation_update(xpred, Ppred, nu, S, H)
K = Ppred * H' * inv(S);                 %% Kalman gain
xnew = xpred + K * nu;                  %% new state
Pnew = Ppred - K * S * K';              %% new covariance