правильный

Класс: trackingKF

Исправьте вектор состояния Кальмана и утвердите ковариационную матрицу

Синтаксис

[xcorr,Pcorr] = correct(filter,z)
[xcorr,Pcorr] = correct(filter,z,zcov)

Описание

[xcorr,Pcorr] = correct(filter,z) возвращает исправленный вектор состояния, xcorr, и исправленную ошибочную ковариационную матрицу состояния, Pcorr, фильтра отслеживания, filter, на основе текущего измерения, z. Внутреннее состояние и ковариация Фильтра Калмана перезаписываются исправленными значениями.

[xcorr,Pcorr] = correct(filter,z,zcov) также задает ковариационную матрицу погрешности измерения, zcov. Когда задано, zcov используется в качестве шума измерения. В противном случае шум измерения будет иметь значение свойства MeasurementNoise.

Исправленное состояние и ковариация заменяют внутренние значения Фильтра Калмана.

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

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

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

Пример: filter = trackingKF

Объектное измерение, заданное как N с действительным знаком - вектор элемента.

Пример: [2;1]

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

Ошибочная ковариационная матрица измерений, заданных как положительно-определенный N с действительным знаком-by-N матрица.

Пример: [2,1;1,20]

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

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

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

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

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

Примеры

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

Создайте линейный Фильтр Калмана, который использует модель движения 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')

Введенный в R2017a