Estimation d'une constante avec le filtre de Kalman

Contents

Définition des paramètres

sigmaq = 0.001; % écart type du bruit de modèle
sigmar = 0.5; % écart type du bruit de mesure

F = 1; % matrice d'évolution, constante, pas d'évolution
H = 1; % mesure directe de l'état
Q = sigmaq^2; % covariance du bruit de modèle
R = sigmar^2; % covariance du bruit de mesure

Simulation des mesures

L = 200; % longueur de la séquence
z = 1 * ones(1, L) + sigmar * randn(1, L); % constante + du bruit

Filtre de Kalman

[xest, Pest, K] = kalman(z(2:end), F, H, Q, R, z(1), R);

Tracé de l'estimation avec son intervalle de confiance à 95%

Xe = [z(1) xest(1,:)];

shadedErrorBar(1:L,Xe, 2*sqrt([R; squeeze(Pest)]))


hold on

plot(ones(L,1), 'k')
scatter(1:L,z, 'k', 'x')
xlim([0 L])
ylim([0 2])
xlabel('iterations')

Variance de l'estimation

Au fur et à mesure des itérations, la variance de l'estimation diminue

figure
plot(squeeze(Pest))
xlim([0 L])
ylim([0 sigmar^2])
xlabel('iterations')
ylabel('Covariance')

Gain de Kalman

Plus la variance de l'estimation est faible, plus le filtre de Kalman fait confiance au modèle. Ceci se traduit par un gain de Kalman de plus en plus faible.

figure
plot(squeeze(K))
xlim([0 L])
ylim([0 0.6])
xlabel('iterations')
ylabel('Gain')