fusecovint

Сплав ковариации с помощью пересечения ковариации

Описание

пример

[fusedState,fusedCov] = fusecovint(trackState,trackCov) плавит состояния дорожки в trackState и их соответствующие ковариационные матрицы trackCov. Функция вычисляет сплавленное состояние и ковариацию как пересечение отдельных ковариаций. Это создает выпуклую комбинацию ковариаций и находит веса, которые минимизируют определитель сплавленной ковариационной матрицы.

пример

[fusedState,fusedCov] = fusecovint(trackState,trackCov,minProp) оценивает сплавленную ковариацию путем минимизации minProp, который может быть или определителем или трассировкой сплавленной ковариационной матрицы.

Примеры

свернуть все

Задайте вектор состояния дорожек.

x(:,1) = [1;2;0];
x(:,2) = [2;2;0];
x(:,3) = [2;3;0];

Задайте ковариационные матрицы дорожек.

p(:,:,1) = [10 5 0; 5 10 0; 0 0 1];
p(:,:,2) = [10 -5 0; -5 10 0; 0 0 1]; 
p(:,:,3) = [12 9 0; 9 12 0; 0 0 1]; 

Оцените сплавленный вектор состояния и его ковариацию.

[fusedState,fusedCov] = fusecovint(x,p);

Используйте trackPlotter построить результаты.

tPlotter = theaterPlot('XLim',[-10 10],'YLim',[-10 10],'ZLim',[-10 10]);
tPlotter1 = trackPlotter(tPlotter, ...
    'DisplayName','Input Tracks','MarkerEdgeColor',[0.000 0.447 0.741]);
tPlotter2 = trackPlotter(tPlotter,'DisplayName', ...
    'Fused Track','MarkerEdgeColor',[0.850 0.325 0.098]);
plotTrack(tPlotter1,x',p)
plotTrack(tPlotter2,fusedState',fusedCov)
title('Covariance Intersection Fusion')

Задайте вектор состояния дорожек.

x(:,1) = [1;2;0];
x(:,2) = [2;2;0];
x(:,3) = [2;3;0];

Задайте ковариационные матрицы дорожек.

p(:,:,1) = [10 5 0; 5 10 0; 0 0 1];
p(:,:,2) = [10 -5 0; -5 10 0; 0 0 1]; 
p(:,:,3) = [12 9 0; 9 12 0; 0 0 1]; 

Оцените сплавленный вектор состояния и его ковариацию. Объедините исходные ковариации так, чтобы трассировка сплавленной ковариационной матрицы была минимизирована.

[fusedState,fusedCov] = fusecovint(x,p,'trace');

Используйте trackPlotter построить результаты.

tPlotter = theaterPlot('XLim',[-10 10],'YLim',[-10 10],'ZLim',[-10 10]);
tPlotter1 = trackPlotter(tPlotter, ...
    'DisplayName','Input Tracks','MarkerEdgeColor',[0.000 0.447 0.741]);
tPlotter2 = trackPlotter(tPlotter, ...
    'DisplayName','Fused Track','MarkerEdgeColor',[0.850 0.325 0.098]);
plotTrack(tPlotter1,x',p)
plotTrack(tPlotter2,fusedState',fusedCov)
title('Covariance Intersection Fusion')

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

свернуть все

Отследите состояния в виде N-by-M матрица, где N является размерностью состояния, и M является количеством дорожек.

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

Отследите ковариационные матрицы в виде N-by-N-by-M массив, где N является размерностью состояния, и M является количеством дорожек.

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

Свойство минимизировать при оценке сплавленной ковариации в виде 'det' или 'trace'.

.

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

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

свернуть все

Сплавленное состояние, возвращенное как N-by-1 вектор, где N является размерностью состояния.

Сплавленная ковариационная матрица, возвращенная как N-by-N матрица, где N является размерностью состояния.

Ссылки

[1] Matzka, Штефан и Ричард Алтендорфер. "Сравнение алгоритмов сплава от дорожки к дорожке для автомобильного сплава датчика". В Fusion Мультидатчика и Интегрировании для Интеллектуальных Систем, стр 69-81. Спрингер, Берлин, Гейдельберг, 2009.

[2] Julier, Саймон и Джеффри К. Улманн. "Общий децентрализованный сплав данных с пересечением ковариации". В Руководстве сплава данных о мультидатчике, стр 339-364. Нажатие CRC, 2017.

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

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

Смотрите также

|

Введенный в R2018b