exponenta event banner

constaccjac

Якобиан для движения с постоянным ускорением

Описание

пример

jacobian = constaccjac(state) возвращает обновленный якобиан, jacobian, для модели движения фильтра Калмана с постоянным ускорением. Время шага составляет одну секунду. state указывает текущее состояние фильтра.

пример

jacobian = constaccjac(state,dt) также определяет временной шаг, dt.

[jacobian,noisejacobian] = constaccjac(state,w,dt) определяет состояние шума, wи возвращает якобиана, noisejacobian, состояния по отношению к шуму.

Примеры

свернуть все

Вычислите состояние Якобиана для двухмерного движения с постоянным ускорением.

Определите начальное состояние и вычислите состояние якобиана в течение одной секунды.

state = [1,1,1,2,1,0];
jacobian = constaccjac(state)
jacobian = 6×6

    1.0000    1.0000    0.5000         0         0         0
         0    1.0000    1.0000         0         0         0
         0         0    1.0000         0         0         0
         0         0         0    1.0000    1.0000    0.5000
         0         0         0         0    1.0000    1.0000
         0         0         0         0         0    1.0000

Вычислите состояние Якобиана для двухмерного движения с постоянным ускорением. Установите время шага 0,5 секунды.

state = [1,1,1,2,1,0].';
jacobian = constaccjac(state,0.5)
jacobian = 6×6

    1.0000    0.5000    0.1250         0         0         0
         0    1.0000    0.5000         0         0         0
         0         0    1.0000         0         0         0
         0         0         0    1.0000    0.5000    0.1250
         0         0         0         0    1.0000    0.5000
         0         0         0         0         0    1.0000

Входные аргументы

свернуть все

Вектор состояния фильтра Калмана для движения с постоянным ускорением, заданный как действительный вектор 3N-element. N - число пространственных степеней свободы движения. Для каждой пространственной степени движения вектор состояния принимает форму, показанную в этой таблице.

Пространственные размерыСтруктура вектора состояния
1-D[x;vx;ax]
2-D[x;vx;ax;y;vy;ay]
3-D[x;vx;ax;y;vy;ay;z;vz;az]

Например, x представляет координату x, vx представляет скорость в направлении x, и ax представляет ускорение в направлении X. Если модель движения находится в одномерном пространстве, предполагается, что оси y и z равны нулю. Если модель движения находится в двумерном пространстве, предполагается, что значения вдоль оси Z равны нулю. Координаты положения в метрах. Координаты скорости в метрах/секунду. Координаты ускорения в метрах/секунд2.

Пример: [5;0.1;0.01;0;-0.2;-0.01;-3;0.05;0]

Типы данных: double

Интервал временного шага фильтра, заданный как положительный скаляр. Единицы времени в секундах.

Пример: 0.5

Типы данных: single | double

Шум состояния, заданный как скалярный или вещественно-значимый действительный вектор N-by-1. N - количество размеров движения. Например, N = 2 для 2-D движения. Если задано как скаляр, скалярное значение расширяется до N-by-1 вектора.

Типы данных: single | double

Выходные аргументы

свернуть все

Движение с постоянным ускорением Якобиана, возвращаемое как вещественно-значимая матрица 3N-by-3N.

Шум движения с постоянным ускорением Якобиан, возвращаемый в виде вещественно-значимой матрицы 3N-by-N. N - число пространственных степеней движения. Например, N = 2 для 2-D движения. Якобиан строится из частных производных состояния на обновленном временном шаге относительно составляющих шума.

Алгоритмы

Для двумерного процесса постоянного ускорения матрица Якобиана после временного шага T является блок-диагональю:

[1T12T200001T0000010000001T12T200001T000001]

Блок для каждого пространственного размера имеет следующую форму:

[1T12T201T001]

Для каждого дополнительного пространственного размера добавьте идентичный блок.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2017a