предсказать

Класс: trackingKF

Предскажите линейное состояние Фильтра Калмана

Синтаксис

[xpred,Ppred] = predict(filter)
[xpred,Ppred] = predict(filter,u)
[xpred,Ppred] = predict(filter,F)
[xpred,Ppred] = predict(filter,F,Q)
[xpred,Ppred] = predict(filter,u,F,G)
[xpred,Ppred] = predict(filter,u,F,G,Q)
[xpred,Ppred] = predict(filter,dt)
[xpred,Ppred] = predict(filter,u,dt)

Описание

[xpred,Ppred] = predict(filter) возвращает предсказанный вектор состояния и предсказанную ошибочную ковариационную матрицу состояния для следующего временного шага на основе шага текущего времени. Ожидаемые значения перезаписывают вектор внутреннего состояния и ковариационную матрицу фильтра.

Этот синтаксис применяется, когда вы устанавливаете ControlModel на пустую матрицу.

[xpred,Ppred] = predict(filter,u) также задает вход управления или силу, u.

Этот синтаксис применяется, когда вы устанавливаете ControlModel на непустую матрицу.

[xpred,Ppred] = predict(filter,F) также задает модель изменения состояния, F. Используйте этот синтаксис, чтобы изменить модель изменения состояния во время симуляции.

Этот синтаксис применяется, когда вы устанавливаете ControlModel на пустую матрицу.

[xpred,Ppred] = predict(filter,F,Q) также задает ковариацию шума процесса, Q. Используйте этот синтаксис, чтобы изменить модель изменения состояния и ковариацию шума процесса во время симуляции.

Этот синтаксис применяется, когда вы устанавливаете ControlModel на пустую матрицу.

[xpred,Ppred] = predict(filter,u,F,G) также задает модель управления, G. Используйте этот синтаксис, чтобы изменить модель изменения состояния и модель управления во время симуляции.

Этот синтаксис применяется, когда вы устанавливаете ControlModel на непустую матрицу.

[xpred,Ppred] = predict(filter,u,F,G,Q) задает силу или вход управления, u, модель изменения состояния, F, модель управления, G, и ковариацию шума процесса, Q. Используйте этот синтаксис, чтобы изменить модель изменения состояния, модель управления и ковариацию шума процесса во время симуляции.

Этот синтаксис применяется, когда вы устанавливаете ControlModel на непустую матрицу.

пример

[xpred,Ppred] = predict(filter,dt) возвращает предсказанную ошибочную ковариацию оценки состояния и оценки состояния после временного шага, dt.

Этот синтаксис применяется, когда свойство MotionModel не установлено в 'Custom', и свойство ControlModel установлено в пустую матрицу.

[xpred,Ppred] = predict(filter,u,dt) также задает вход управления, u.

Этот синтаксис применяется, когда свойство MotionModel не установлено в 'Custom', и свойство ControlModel установлено в непустую матрицу.

Входные параметры

развернуть все

Фильтр Калмана, заданный как объект trackingKF.

Пример: filter = trackingKF

Управляйте вектором, L с действительным знаком - вектор элемента.

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

Модель изменения состояния, заданная как M с действительным знаком-by-M матрица, где M является размером вектора состояния.

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

Ковариационная матрица шума процесса, заданная как положительно-определенный, M с действительным знаком-by-M матрица, где M является длиной вектора состояния.

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

Модель управления, заданная как M с действительным знаком-by-L матрица, где M является размером вектора состояния и L, является количеством независимых средств управления.

Временной шаг, заданный как положительная скалярная величина. Модули находятся в секундах.

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

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

развернуть все

Предсказанное состояние, возвращенное как M с действительным знаком - вектор элемента. Предсказанное состояние представляет выводимую оценку вектора состояния, распространенного от предыдущего состояния с помощью изменения состояния и моделей управления.

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

Предсказанная ковариационная матрица состояния, заданная как M с действительным знаком-by-M матрица. M является размером вектора состояния. Предсказанная ковариационная матрица состояния представляет выводимую оценку вектора ковариационной матрицы. Фильтр распространяет ковариационную матрицу от предыдущей оценки.

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

Примеры

развернуть все

Создайте линейный Фильтр Калмана, который использует модель движения 2D Constant Velocity. Примите, что измерение состоит из x-y местоположения объекта.

Задайте оценку начального состояния, чтобы иметь нулевую скорость.

x = 5.3;
y = 3.6;
initialState = [x;0;y;0];
KF = trackingKF('MotionModel','2D Constant Velocity','State',initialState);

Создайте измеренные положения из траектории постоянной скорости.

vx = 0.2;
vy = 0.1;
T  = 0.5;
pos = [0:vx*T:2;5:vy*T:6]';

Предскажите и исправьте состояние объекта.

for k = 1:size(pos,1)
    pstates(k,:) = predict(KF,T);
    cstates(k,:) = correct(KF,pos(k,:));
end

Постройте дорожки.

plot(pos(:,1),pos(:,2),'k.', pstates(:,1),pstates(:,3),'+', ...
    cstates(:,1),cstates(:,3),'o')
xlabel('x [m]')
ylabel('y [m]')
grid
xt  = [x-2 pos(1,1)+0.1 pos(end,1)+0.1];
yt = [y pos(1,2) pos(end,2)];
text(xt,yt,{'First measurement','First position','Last position'})
legend('Object position', 'Predicted position', 'Corrected position')

Введенный в R2018b