Как определить матрицу перехода состояний для фильтров Калмана?

Я пытаюсь понять Фильтр Калмана, и есть некоторые термины, которые я не понимаю.

Я читал о матрице перехода Dynamics Model (4x4). В нем говорится, что эта матрица будет отображать приведенные ниже уравнения в компоненты состояния. Уравнения представляют собой простые уравнения физики:

xt = x(t-1) + vx(dt)
yt = y(t-1) + vy(dt)
dt = 1

Код, представляющий это, выглядит следующим образом:

dt = 0.1
DT = np.matrix([[1.,0.,dt,0],[0.,1.,0.,dt],[0.,0.,1.,0.],[0.,0.,0.,1.]])

Может ли кто-нибудь помочь мне понять это? Что именно представляет собой это представление?


person Sophia    schedule 16.03.2019    source источник


Ответы (2)


Таким образом, матрица перехода описывает спонтанный переход от одного момента времени i к следующему i+1. Скажем, у вас есть маленький робот, который ездит по вашему дому. Затем иногда он будет немного скользить по полу, потому что у него не всегда будет хорошее сцепление с дорогой. Матрица перехода пытается смоделировать это.

Модель перехода затем используется в нескольких частях фильтра Калмана. Во-первых, чтобы описать дисперсию и положение вашего робота в момент времени i. И это часть формулировки ошибки прогноза (усиления Калмана) вашей модели датчика, чтобы минимизировать дисперсию вашего следующего измерения.

По сути, это большая часть фильтра Калмана, но также тривиальная. Он просто пытается смоделировать спонтанный переход во времени (также известный как скольжение, скольжение, подталкивание ветром...)

Пожалуйста, спросите больше, если это не помогло.

person Auss    schedule 16.03.2019
comment
Как определить эту матрицу? Не могли бы вы показать небольшой пример кода? - person Sophia; 16.03.2019
comment
Я просматривал код на stackoverflow.com/questions/ 13901997/kalman-2d-filter-in-python Определяет ли он матрицу перехода? - person Sophia; 16.03.2019
comment
Таким образом, F кажется матрицей перехода. Как это описано так в Википедии. У меня есть еще одна книга, в которой используются другие переменные и матрица, полная единиц. Я думаю, это зависит от вашего предположения о модели. Предполагая, что n = вектор состояния (x_position, y_position, Velocity_x, Velocity_y), тогда размер вашей переходной матрицы должен быть n x n. - person Auss; 16.03.2019
comment
У меня был некоторый код для справки, который определяет матрицу перехода как np.matrix([[1.,0.,0.1,0],[0.,1.,0.,0.1],[0.,0.,1.,0.],[0.,0.,0.,1.]]), которая представляет собой матрицу 4x4. Я не мог понять, что здесь означает 0.1. Любые идеи? - person Sophia; 16.03.2019
comment
К сожалению нет. Я просто оставил сообщение, потому что знаю, что вы можете определить эту матрицу как хотите и что она означает (согласно моей книге). Почему мой автор выбрал матрицу из единиц, а ваш пример кода содержит 0,1, я не могу сказать. Код предполагает меньшее значение скорости. Но почему? Я не знаю. - person Auss; 16.03.2019
comment
Я не получил часть скорости? Не могли бы вы объяснить построение этой матрицы? Может быть, это разрешит мои сомнения. - person Sophia; 16.03.2019
comment
Ну, насколько я понимаю, матрица описывает поведение вашего изменения положения и скорости от одного шага к другому. Итак, если у вас есть 4-кортеж x_position, y_position, x_velocity, y_velocity, то матрица описывает, насколько ваша текущая позиция и текущая скорость повлияют на этот случайный переход. 1 означает все эти атрибуты. 0,1 означает 10%. Вот как я это понимаю. - person Auss; 16.03.2019
comment
Не уверен, понял ли я это. Допустим, 3-я строка и 2-й столбец равны 0. Что это говорит о переходе состояния? Точно так же 1-я строка и 1-й столбец равны 1. Что это значит? - person Sophia; 16.03.2019
comment
@Sophia, поскольку обычно это единичная матрица (1 с по диагонали матрицы), никогда не должно быть значения в третьем столбце и второй строке. Только вторая строка, второй столбец или третья строка, третий столбец и т. д., и я бы придерживался своего предположения, что матрица во всех этих формулах описывает, какая часть текущей позиции или скорости отвечает за спонтанный переход вашего агента. Он используется для простого умножения матриц. Почему ваша матрица содержит эти 0,1 за пределами диагонали, мне непонятно. Мне жаль! - person Auss; 18.03.2019

Матрица перехода состояний описывает, как ваши состояния распространяются со временем при заданном начальном состоянии. Для линейной неизменной во времени (LTI) системы это постоянная матрица.

Например, предположим, что у меня есть двумерная модель LTI с дискретным временем, приведенная ниже:

x(k+1) = x(k) ---- (1)

y(k+1) = y(k) + 2x(k) ----- (2)

Это можно записать в матричной форме, посмотрев на коэффициенты состояний в каждом уравнении, как показано ниже:

[x(k+1), y(k+1)] = [[1.0, 0.0],[2.0, 1.0]]* [x(k),y(k)]

Матрица [[1.0, 0.0],[2.0, 1.0]] известна как матрица переходов между состояниями. Обратите внимание, это похоже на то, как вы пишете линейные системы уравнений в матричной форме для их решения. одновременно используя правило Крамера или обращение матрицы.

Как видите, в (1) появляется только x(k) с коэффициентом 1, следовательно, первая строка матрицы перехода — [1,0, 0,0]. Точно так же вторая строка — [2.0, 1.0].

Взгляните на структуру вашей матрицы

DT = np.matrix([[1.,0.,dt,0],[0.,1.,0.,dt],[0.,0.,1.,0.],[ 0.,0.,0.,1.]])

Я могу сказать, что у вас есть 4 переменные [x(t-1), y(t-1), vx, vy]. Вы показали только два уравнения состояния (x(t) и y(t)) и первые 2 строки вашей матрицы хорошо соответствуют коэффициентам переменных в уравнениях.

Из вашей матрицы я могу сделать вывод, что последние два уравнения

vx(t) = vx(t-1) и vy(t) = vy(t-1).

Я бы посоветовал вам больше узнать о моделях пространства состояний (должно быть достаточно LTI). https://en.wikipedia.org/wiki/State-space_representation

Примечание. Для моделей с непрерывным временем для получения матрицы перехода состояний потребуется найти экспоненциальную матрицу.

person decardinb    schedule 16.03.2019