0

У меня вопрос о фильтре Калмана. Я использую фильтр Калмана для модели пространства состояния следующим образом:Каковы возможные причины, если фильтр Калмана не может вычислить стабилизирующий эффект Кальмана?

X(k+1) = A(k)x(k)+B(k)u(k)+w(k), w(k) ∼ N(0,Q) 
Y(k) = C(K)x(k)+D(k)u(k)+v(k), v(k) ∼ N(0,R) 

Какие государственные космические матрицы (A(k),B(k),C(k),D(k)) обновляются в каждый момент времени выборки, но Q и R матрицы считаются постоянными. Уравнения, которые вычисляют коэффициент усиления Калмана (К (к)) и ковариационной матрице P (P (K)) являются следующим:

K(k) = (P(k)*C(k)')/(R + C(k)*P(k)*C(k)'); 
Pxx(k) = (eye(n)-K(k)*C(k))*P(k)*(eye(n)-K(k)*C (k))'+K(k)*R*K(k)';%Joseph form 
P(k) = A(k)*Pxx(k)*A(k)' + Q; 

Проблема, с которой сталкиваюсь я связан с устойчивостью (A(k)-K(k)*C(k)). В некоторых временах выборки расчетное усиление Кальмана не может стабилизировать матрицу (A(k)-K(k)*C(k)), а собственные значения (A(k)-K(k)*C(k)) находятся за пределами единичного круга.

Не могли бы вы помочь мне выяснить причину этой проблемы? Я ожидаю, что фильтр Калмана даст мне коэффициент усиления, который делает матрицу (A(k)-K(k)*C(k)) стабильной с собственными значениями внутри единичного круга.

ответ

0

Это может произойти, когда система ненаблюдаема. Проверьте ранг матрицы наблюдаемости

O = [C(k) 
    C(k)A(k) 
    C(k)A(k)^2 
    ... 
    C(k)A(k)^(n-1)] 

, где n является размерность пространства состояний (то есть, это A(k)n X n матрица). Если ранг строки O составляет менее n, у вас возникла проблема.

В Matlab, O = obsv(A,C) вычислит матрицу наблюдаемости, и rank(O) даст свой ранг.

Надеюсь, это поможет.