exponenta event banner

AlphaBetaFilter

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

Описание

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-элемента с действительным значением. Скалярный вход расширяется до вектора М-элемента. Вектор состояния - это конкатенированные состояния из каждого измерения.

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

Свойство 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++ с помощью MATLAB ® Coder™

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