this is for holding javascript data
Stepan Salov added section_MatLab_addcontentsline_toc_section__.tex
almost 8 years ago
Commit id: 130daa03c9aed478cc05c87913878a5043791f87
deletions | additions
diff --git a/section_MatLab_addcontentsline_toc_section__.tex b/section_MatLab_addcontentsline_toc_section__.tex
new file mode 100644
index 0000000..21b2c35
--- /dev/null
+++ b/section_MatLab_addcontentsline_toc_section__.tex
...
\section*{MatLab}
\addcontentsline{toc}{section}{MatLab}
Теперь реализуем всё вышесказанное в MatLab.\\
Код:
\begin{verbatim}
clear all;
% Задано движение формулой:
% x(t) = 5 + 2t + 0.1*t^2
% Т.е. ускорение равно 0.2, начальная скорость равно 2
% x(t+1) = x(t) + a*t + 2.1
N=100; % Количество измерений
a=0.2; % Ускорение
sigmaPsi=1;
sigmaEta=50;
k=1:N;
x=k;
x(1)=5; % Начальная координата
z(1)=x(1)+normrnd(0,sigmaEta);
for t=1:(N-1)
x(t+1)=x(t)+a*t+2.1+normrnd(0,sigmaPsi);
z(t+1)=x(t+1)+normrnd(0,sigmaEta);
end;
%Применяем фильтр Калмана
xOpt(1)=z(1); % База итерации
eOpt(1)=sigmaEta; % Т.к. eOpt(e0^2) = eOpt(Eta0^2) = sigmaEta - база итерации
for t=1:(N-1)
eOpt(t+1)=sqrt((sigmaEta^2)*(eOpt(t)^2+sigmaPsi^2)/(sigmaEta^2+eOpt(t)^2+sigmaPsi^2));
K(t+1)=(eOpt(t+1))^2/sigmaEta^2;
xOpt(t+1)=(xOpt(t)+a*t+2.1)*(1-K(t+1))+K(t+1)*z(t+1);
end;
hold all;
plot(k,xOpt,'LineWidth',2);
plot(k,z);
plot(k,x,'--','LineWidth',2);
ylabel('Координата (м)');
xlabel('Время (сек)');
legend('Фильтрация сенсора по Калману', 'Показания сенсора', 'Истинная координата');
\end{verbatim}
Запустим программу и получим график на котором будут располагаться 3 линии: линия истинного положения бронепоезда, линия показания сенсора и линия полученная после использования фильтра Калмана.\\
Результат выполнения программы: