📄 incorrec.m
字号:
%INCORREC Random walk incorrectly modeled as a random constant.
%Kai Borre, 04-13-97
%Copyright (c) 1997 by Kai Borre
%$Revision: 1.0 $ $Date: 1997/09/22 $
e = exist('incorrec.eps');
if e ~= 0
delete incorrec.eps
end
% Random walk process simulated using Gaussian random numbers
% with zero mean and unit variance ~ N(0,1)
tmax = 100;
t = 0:tmax;
rwp = randn(size(t));
%We assume the following lines generate a one-dimensional random walk
rw(1) = rwp(1);
for i = 1:tmax
rw(i+1) = rw(i) + rwp(i+1);
end
% Generation of true model
F = 1;
A = 1;
Q = 1;
R = 0.1;
% Initial conditions
x_minus = 0;
P_minus = 1;
% Artificial way of creating observations
b = rw + randn(size(t));
% Kalman filtering
for i = 0:tmax
[x_plus, P_plus, K, innovation_var] = ...
k_updatx(x_minus, P_minus, A, b(i+1), R, Q);
% fprintf(' %4g %4g \n',i,K);
x_minus = x_plus;
P_minus = P_plus;
% Storing
x_plus_corr = [x_plus_corr x_plus];
% fprintf(' %4g %8.4f %8.4f %8.4f %8.4f %8.4f\n',...
% i, x_plus, P_plus, x_minus, P_minus, b(i+1));
end
% Generation of incorrect model
Q = 0;
% Initial conditions
x_minus = 0;
P_minus = 1;
% Kalman filtering
for i = 0:tmax
[x_plus, P_plus, K, innovation_var] = ...
k_updatx(x_minus, P_minus, A, b(i+1), R, Q);
% fprintf(' %4g %4g \n',i,K);
x_minus = x_plus;
P_minus = P_plus;
% Storing
x_plus_inc = [x_plus_inc x_plus];
% fprintf(' %4g %8.4f %8.4f %8.4f %8.4f %8.4f\n',...
% i, x_plus, P_plus, x_minus, P_minus, b(i+1));
end
figure;
pl1 = plot(t,b,'yo',t,rw,'r-',t,x_plus_corr,'b:',t,x_plus_inc,'c--');
set(pl1,'Markersize',4);
title('Simulated random walk process','Fontsize',16)
ylabel('State variable','Fontsize',16)
legend('Observations','Random walk process', ...
'Filter with correct model',...
'Filter with incorrect model');
set(gca,'Fontsize',16);
legend('Observations','Random walk process',...
'Filter for correct model',...
'Filter for incorrect model');
pause
print incorrec -deps
%%%%%%%% end incorrec.m %%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -