AlphaBetaFilter

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

Описание

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

Создание

Синтаксис

abf = AlphaBetaFilter
abf = AlphaBetaFilter(Name,Value,...)

Описание

abf = AlphaBetaFilter создает фильтр альфы - беты в течение дискретного времени, 2D постоянной скоростной системы. Модель движения фильтра соответствует установке свойства 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 - вектор элемента. Вектор состояния является конкатенированными состояниями от каждой размерности.

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

Свойство 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')

Примените фильтр альфы - беты, чтобы отследить цель, перемещающуюся в постоянное ускорение вдоль оси 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');

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

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')

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

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

Введенный в R2018b

Для просмотра документации необходимо авторизоваться на сайте