Main Content

fusexcov

Covariance fusion using cross-covariance

Description

example

[fusedState,fusedCov] = fusexcov(trackState,trackCov)fuses the track states intrackStateand their corresponding covariance matricestrackCov. The function estimates the fused state and covariance within a Bayesian framework in which the cross-correlation between tracks is unknown.

example

[fusedState,fusedCov] = fusexcov(trackState,trackCov,crossCovFactor)specifies a cross-covariance factor for the effective correlation coefficient when computing the cross-covariance.

Examples

collapse all

Define a state vector of tracks.

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

Define the covariance matrices of the tracks.

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];

Estimate the fused state vector and its covariance.

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

UsetrackPlotterto plot the results.

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('Cross-Covariance Fusion')

Figure contains an axes object. The axes object with title Cross-Covariance Fusion contains 2 objects of type line. These objects represent Input Tracks, Fused Track.

Define a state vector of tracks.

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

Define the covariance matrices of the tracks.

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];

Estimate the fused state vector and its covariance. Specify a cross-covariance factor of0.5.

[fusedState,fusedCov] = fusexcov(x,p,0.5);

UsetrackPlotterto plot the results.

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('Cross-Covariance Fusion')

Figure contains an axes object. The axes object with title Cross-Covariance Fusion contains 2 objects of type line. These objects represent Input Tracks, Fused Track.

Input Arguments

collapse all

Track states, specified as anN-by-Mmatrix, whereN是dimension of the state andM是number of tracks.

Data Types:single|double

Track covariance matrices, specified as anN-by-N-by-Marray, whereN是dimension of the state andM是number of tracks.

Data Types:single|double

Cross-covariance factor, specified as a scalar.

Data Types:single|double

Output Arguments

collapse all

Fused state, returned as anN1的向量, whereN是dimension of the state.

Fused covariance matrix, returned as anN-by-Nmatrix, whereN是dimension of the state.

References

[1] Bar-Shalom, Yaakov, and Xiao-Rong Li.Multitarget-multisensor tracking: principles and techniques.Vol. 19. Storrs, CT: YBs, 1995.

[2] Weng, Zhiyuan, and Petar M. Djurić. "A bayesian approach to covariance estimation and data fusion." In 2012 Proceedings of the 20th European Signal Processing Conference , pp. 2352-2356. IEEE, 2012.

[3] Matzka, Stephan, and Richard Altendorfer. "A comparison of track-to-track fusion algorithms for automotive sensor fusion." In Multisensor Fusion and Integration for Intelligent Systems, pp. 69-81. Springer, Berlin, Heidelberg, 2009.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2018b