ln=
ln2p –
ln|cov(y(k),y(k)|
,Rk)| –
n(k)T(cov(y(k),y(k)|
,Rk))–1n(k)
(24)
где n(k) = y(k) – M(y(k)|,Rk). Используя (10) и (13), а так же
соотношение
M(y(k)|
,Rk) = M(Hk*x(k)|
) = Hk*x(k;k–1), представим выражение v(k) в виде:
n(k) = y(k)–Hk*x(k;k–1) = Hk*x(k) + v(k) – Hk*x(k;k–1) = Hk(x(k)–x(k;k–1)) + v(k) (25)
Т.к. M(n(k)|,Rk) = 0, поэтому из (25) и (14) имеем:
cov(y(k),y(k)|) = M(n(k),n(k)T|
,Rk) =
=
M(Hk(x(k) – x(k;k–1))*(x(k) – x(k;k–1))T|
,Rk) + M(Hk(x(k)
– x(k;k–1))*v(k)|
,Rk) +
+
M(v(k)*(x(k)–x(k;k–1))T*|
,Rk)
+ M(v(k)v(k)T|
,Rk) = Hk*P(k;k–1)*
+ Rk = Ck
(26)
ln =
ln2p –
ln|Ck|
–
n(k)T
n(k) = ln
(27)
Т.о. заменим (23) на ln
. Из (27) получим условие существования
экстремума
= –
+
= 0
т.е. =
. Обозначим
=
.
Определим корреляционную матрицу
Kk* из (26)
M[Kk**
|
,Rk]
= Kk*M[
|
,Rk]*
= Kk*Ck*
.
Используем (7) и симметричность матриц Ck и P(k;k–1):
Kk*Ck* = Kk*Ck*(
)T*Hk*P(k;k–1) = Kk*Hk*P(k;k–1)
Т.о. из (8)
P(k;k) = P(k;k–1) – Kk*Hk*P(k;k–1)
= P(k;k–1) – Kk*Ck*
где, заменив Ck на ,
получим (21).
■
Тестирование проводилось на основе системы управления космическим кораблем по одной координате. Параметры модели имеют вид:
При значении a = –3.7899, b = 5.0090, Qk = 1, Rk = и u(k)
= 1 были получены следующие результаты (см.
рис): ||y
–`y || = 8.7755
![]() |
Рис.1 у(пунк.) и`y(спл.)
![]() |
Рис.2 С(пунк.) и`С(спл.)
Приложение 1
Текст программы в системе MATLAB
syms tau; syms tkp; syms tk;
Kr=3.17e5; Kp=1.65e6; Jv=4.1822e4;
F=[-Kr/Jv, 1; -Kp/Jv, 0]; C=[0;Kp/Jv]; //Инициализация
H=[1,0]; u=ones(1,1); Q=eye(size(u,1)); R=eye(2);
//Н - строка, u=1, Q=1, R – единичная матрица 2х2
P=eye(2); // Р – единичная матрица 2х2
G=(zeros(1,2))'; // G – нулевой столбец
realx=zeros(2,steps); // realx – матрица 2хsteps
Psi_sym=int(expm(F*(tkp-tau))*C,tau,tk,tkp); // Psi_sim =
Gamma_sym=int(expm(F*(tkp-tau))*G,tau,tk,tkp); // Gamma_sym =
// генерация выборки
realx(:,1)=(normrnd(0,P(1,1),1,size(realx,1)))';
// В первый столбец заносится случайная величина, имеющая нормальное распределение с мат. ожиданием 0 и дисперсией Р(1,1).
y=zeros(1,size(realx',1)); // у – строка размера steps
v=normrnd(0,R(1,1),1,size(y,1));
//v-случайная величина, имеющая нормальное распределение с мат. ожиданием 0 и дисперсией R(1,1).
y(:,1)=H*realx(:,1)+v';
Phi=expm(F*(1)); // Phi =
for i=2:size(realx',1) // Цикл по i от 2 до steps
tkp=i+1;
tk=i;
Psi=eval(Psi_sym); // Вычислить выражение для Psi_sym
Gamma=eval(Gamma_sym); // Вычислить выражение для Gamma_sym
w=normrnd(0,Q(1,1),1,size(G',1));
// Сформировать СВ, имеющую нормальное распределение с мат. ожидание 0 и дисперсией Q(1,1).
realx(:,i)=Phi*realx(:,i-1)+Psi*u'+Gamma*w';
// Считаем следующий х через предыдущий.
v=normrnd(0,R(1,1),1,size(y,1)); // Считаем помеху
y(:,i)=H*realx(:,i)+v'; // Вычисляем отклик (измерение).
end
// алгоритм фильтрации
x=zeros(size(realx,1),size(realx',1));
x(:,1)=realx(:,1); // Помещаем в х первый столбец realx
Phi=expm(F*(3-2)); syms tau;
Psi=double(int(expm(F*(3-tau))*C,tau,2,3)); //
Gamma=double(int(expm(F*(i+1-tau))*G,tau,i,i+1)); //
x(:,2)=Psi*u+Phi*x(:,1); // считаем 2ю компоненту х чере 1ю
P=Phi*P*Phi'+Gamma'*Q*Gamma; // считаем Р
for i=2:size(realx',1)-1 // цикл от 2 до steps
//фильтрация
nu=y(:,i)-H*x(:,i); // считаем v
Cn=nu*nu'; // считаем Cn
An2(1,i-1)=Cn;
An2(2,i-1)=[1,0]*R*[1,0]' + H*P*H';
K=P*H'*pinv(Cn); // pinv - псевдообращение
P=P-K*Cn*K'; // пересчитываем Р
x(:,i)=x(:,i)+K*nu; // пересчитываем х
// экстраполяция
tkp=i+1;
tk=i;
Psi=eval(Psi_sym); // вычисляем новое Psi
Gamma=eval(Gamma_sym); // вычисляем новое Gamma
x(:,i+1)=Psi*u+Phi*x(:,i); // считаем новый х
P=Phi*P*Phi'+Gamma'*Q*Gamma; // пересчитываем Р
end
// вывод результатов
i=size(realx',1); nu=y(:,i)-H*x(:,i); Cn=nu*nu'; K=P*H'*pinv(Cn);
P=P-K*Cn*K'; x(:,i)=x(:,i)+K*nu; Cnew(i)=Cn;
y_ap=zeros(1,size(realx',1));
for i=1:size(realx',1)
y_ap(:,i)=H*x(:,i);
end
An1=[y',y_ap'];
II=zeros(1,size(realx',1));
for i=1:size(realx',1)
II(i)=i;
end
plot(II,An1(:,1)',':',II,An1(:,2)','-')
for i=1:size(An2',1)
II2(i)=i;
end
C=An2';
plot(II2,C(:,1),':',II2,C(:,2),'-')
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.