this is for holding javascript data
JackXavier Deleted File
almost 8 years ago
Commit id: 71edc7c21b0e20fda75e44be1b56f68754669c9f
deletions | additions
diff --git a/usepackage_usenames_dvipsnames_color_usepackage__1.tex b/usepackage_usenames_dvipsnames_color_usepackage__1.tex
deleted file mode 100644
index 3acc60e..0000000
--- a/usepackage_usenames_dvipsnames_color_usepackage__1.tex
+++ /dev/null
...
\usepackage[usenames,dvipsnames]{color}
\usepackage[numbered,framed]{mcode}
\section{Листинг программы на matlab}
\begin{lstlisting}
% x(t) = u*t + a*x(t-1) + v_t
% y(t) = b*x(t-1) + e_t
%
% количество шагов
Quantity = 20;
% инициализируем массивы
k = 1:Quantity;
% координата
x = k;
% предсказанна¤ координата
x_predic = k;
% оценочна¤ координата
x_estim = k;
% наблюдаема¤ координата
y = k;
% предсказанное наблюдение
y_predic = k;
% дисперси¤ ошибки в предсказании X в
Sn = k;
% усиление калмана
KalmanGain = k;
% оценка дисперсии
EstimVar = k;
% предсказанна¤ дисперси¤
PredicVar = k;
%константы
% коэффииент координаты
a = 0.26;
% коэффициент наблюдени¤
b = 0.72;
% коэффициент при упрал¤ющей функции
ControlF = 0.8;
% дисперси¤ ошибки модели
disp_ErrorModel = 0.2;
% дисперис¤ ошибки сенсора
disp_ErrorSensor = 5;
% ошибка модели
ErrorModel = normrnd(0,disp_ErrorModel);
% ошибка сенсора
ErrorSensor = normcdf(0,disp_ErrorSensor);
% заполн¤ем координаты
x(1) = 0;
y(1) = b*x(1) + ErrorSensor;
for time = 1 : (Quantity-1)
ErrorModel = normrnd(0,disp_ErrorModel);
ErrorSensor = normrnd(0,disp_ErrorSensor);
x(time+1) = a*x(time) + ControlF*time + ErrorModel;
y(time+1) = b*x(time+1) + ErrorSensor;
end;
% в момент t = 1;
Sn(1) = 1;
PredicVar(1) = 1;
x_predic(1) = 0;
y_predic(1) = 0;
% симул¤ци¤ фильтра
for time = 1 : (Quantity-1)
disp(time);
KalmanGain(time) = (b*Sn(time))/((b*b*Sn(time)) + disp_ErrorModel);
disp(KalmanGain(time));
EstimVar(time) = (1 - b*KalmanGain(time))*Sn(time);
disp(EstimVar(time));
PredicVar(time+1) = EstimVar(time) * a * a + disp_ErrorSensor;
disp(PredicVar(time));
Sn(time+1) = a*a*EstimVar(time) + disp_ErrorSensor;
end;
% заполн¤ем координаты
for time = 1 : (Quantity-1)
disp(time);
x_estim(time) = x_predic(time) + KalmanGain(time)*(y(time)-y_predic(time));
disp( x_estim(time));
x_predic(time+1) = (ControlF*time) + a*x_estim(time);
disp( x_predic(time));
y_predic(time+1) = b*x_predic(time+1);
end;
set(0,'DefaultAxesFontSize',14,'DefaultAxesFontName','Times New Roman');
set(0,'DefaultTextFontSize',14,'DefaultTextFontName','Times New Roman');
figure('Units', 'normalized', 'OuterPosition', [0 0 1 1]);
title('ќдномерный фильтр алмана');
hold on;
plot(k,x,'r','Color',[.7 .1 .1],'LineWidth',2);
plot(k,y,'--','Color',[.1 .7 .1],'LineWidth',2);
plot(k,x_predic,'r','Color',[.1 .1 .7],'LineWidth',2);
plot(k,x_estim,':b','Color',[.7 .1 .7],'LineWidth',2);
legend('координата','наблюдение','предсказание','оценка', 4);
hold off;
\end{lstlisting}