AlphaBetaFilter

Альфа-бета-фильтр для отслеживания объектов

Описание

The AlphaBetaFilter объект представляет альфа-бета фильтр, предназначенный для отслеживания объектов. Используйте этот трекер для платформ, которые следуют линейной модели движения и имеют линейную модель измерения. Линейное движение определяется постоянной скоростью или постоянным ускорением. Используйте фильтр, чтобы предсказать будущее местоположение объекта, уменьшить шум для обнаруженного местоположения или помочь связать несколько объектов с их треками.

Создание

Описание

abf = AlphaBetaFilter создает альфа-бета фильтр для системы дискретного времени 2-D постоянной скорости. Модель движения фильтра соответствует установке MotionModel свойство к '2D Constant Velocity'. В этом случае состояние фильтра принимает форму [x; vx; y; vy].

пример

abf = AlphaBetaFilter(Name,Value,...) задает свойства фильтра, используя одну или несколько Name,Value аргументы в виде пар. Любые неопределенные свойства берут значения по умолчанию.

Свойства

расширить все

Модель целевого движения, заданная как вектор символов или строка. Определение 1D, 2D или 3D устанавливает размерности движения целей. Определение Constant Velocity принимает, что целевое движение имеет постоянную скорость на каждом шаге симуляции. Определение Constant Acceleration принимает, что целевое движение имеет постоянное ускорение на каждом шаге симуляции.

Типы данных: char | string

Состояние фильтра, заданное как скаляр или действительный вектор M -элемент. Скалярный вход расширен до вектора M-element. Вектор состояния является конкатенированными состояниями от каждой размерности.

Векторы состояния для каждой модели движения векторов-столбцов:

Свойство MotionModelВектор состояний
'1D Constant Velocity'[x; vx]
'2D Constant Velocity'[x; vx; y; vy]
'3D Constant Velocity'[x; vx; y; vy; z; vz]
'1D Constant Acceleration'[x; vx; ax]
'2D Constant Acceleration'[x; vx; ax; y; vy; ay]
'3D Constant Acceleration'[x; vx; ax; y; vy; ay; z; vz; az]

где, например, vx обозначает скорость в x -направлении и ax обозначает ускорение в x -направлении.

Пример: [200;0.2;150;0.1;0;0.25]

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

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

Пример: eye(6)

Ковариация шума процесса, заданная как скаляр или D -by - D матрица, где D - размерность движения. Для примера, если MotionModel является '2D Constant Velocity, затем D = 2. Скалярный вход расширен до D -by - D матрицы.

Пример: [20 0.1; 0.1 1]

Ковариация шума измерения, заданная как скаляр или D -by - D матрица, где D - размерность движения. Для примера, если MotionModel является '2D Constant Velocity, затем D = 2. Скалярный вход расширен до M -by - M матрицы.

Пример: [20 0.1; 0.1 1]

Коэффициенты альфа-бета-фильтра, заданные как скаляр или вектор-строка действительных значений. Любой скаляр вход расширен до вектора-строки. Если вы задаете постоянную скорость в MotionModel свойство, коэффициенты [alpha beta]. Если вы задаете постоянное ускорение в MotionModel свойство, коэффициенты [alpha beta gamma].

Пример: [20 0.1]

Функции объекта

predictПредсказать состояние и ковариацию ошибки расчета состояния
correctИсправьте ковариацию ошибки расчета состояния
distanceРасстояния между измерениями и предсказанными измерениями
likelihoodВероятность измерения
cloneСоздайте идентичный объект

Примеры

свернуть все

Примените альфа-бета фильтр, чтобы отследить цель, движущуюся с постоянной скоростью вдоль оси X.

T = 0.1;
V0 = 100;
N = 100;
plat = phased.Platform('MotionModel','Velocity', ...
    'VelocitySource','Input port','InitialPosition',[100;0;0]);
abfilt = phased.AlphaBetaFilter('MotionModel','1D Constant Velocity');
Z = zeros(1,N);
Zp = zeros(1,N);
Zc = zeros(1,N);
for m = 1:N
    pos = plat(T,[100+20*randn;0;0]);
    Z(m) = pos(1);
    [~,~,Zp(m)] = predict(abfilt,T);
    [~,~,Zc(m)] = correct(abfilt,Z(m));
end
t = (0:N-1)*T;
plot(t,Z,t,Zp,t,Zc)
xlabel('Time (s)')
ylabel('Position (m)')
legend('True Track','Predicted Track','Corrected Track', ...
    'Location','Best')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent True Track, Predicted Track, Corrected Track.

Примените альфа-бета фильтр для отслеживания цели, движущейся с постоянным ускорением вдоль оси X.

T = 0.1;
a0 = 100;
N = 100;
plat = phased.Platform('MotionModel','Acceleration', ...
    'AccelerationSource','Input port','InitialPosition',[100;0;0]);
abfilt = phased.AlphaBetaFilter( ...
    'MotionModel','1D Constant Acceleration', ...
    'Coefficients',[0.5 0.5 0.1]);
Z = zeros(1,N);  
Zp = zeros(1,N);
Zc = zeros(1,N);
for m = 1:N
    pos = plat(T,[100+20*randn;0;0]);
    Z(m) = pos(1);
    [~,~,Zp(m)] = predict(abfilt,T);
    [~,~,Zc(m)] = correct(abfilt,Z(m));
end
t = (0:N-1)*T;
plot(t,Z,t,Zp,t,Zc)
xlabel('Time (s)')
ylabel('Position (m)');
legend('True Track','Predicted Track','Corrected Track', ...
    'Location','Best');

Figure contains an axes. The axes contains 3 objects of type line. These objects represent True Track, Predicted Track, Corrected Track.

Примените альфа-бета фильтр, чтобы отследить цель, движущуюся с постоянной скоростью в трёх размерностях.

T = 0.1;
V0 = 100;
N = 100;
plat = phased.Platform('MotionModel','Velocity', ...
    'VelocitySource','Input port','InitialPosition',[100;0;0]);
abfilt = phased.AlphaBetaFilter('MotionModel', ...
    '3D Constant Velocity','State',zeros(6,1));
Z = zeros(3,N);
Zp = zeros(3,N);
Zc = zeros(3,N);
for m = 1:N
    Z(:,m) = plat(T,[V0+20*randn;0;0]);
    [~,~,Zp(:,m)] = predict(abfilt,T);
    [~,~,Zc(:,m)] = correct(abfilt,Z(:,m));
end
t = (0:N-1)*T;
plot(t,Z(1,:),t,Zp(1,:),t,Zc(1,:))
xlabel('Time (s)')
ylabel('Position along X (m)')
legend('True Track','Predicted Track','Corrected Track', ...
    'Location','Best')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent True Track, Predicted Track, Corrected Track.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b