AlphaBetaFilter

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

Описание

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

Создание

Описание

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