This MATLAB package includes the implementation of the multi-scan Markov chain Monte Carlo data association (MCMCDA) algorithm. 

Markov Chain Monte Carlo Data Association

  • Article: Songhwai Oh, Stuart Russell, and Shankar Sastry, " Markov Chain Monte Carlo Data Association for Multi-Target Tracking," IEEE Transactions on Automatic Control, vol. 54, no. 3, pp. 481-497, Mar. 2009. 
  • Abstract: This paper presents Markov chain Monte Carlo data association (MCMCDA) for solving data association problems arising in multi-target tracking in a cluttered environment. When the number of targets is fixed, the single-scan version of MCMCDA approximates joint probabilistic data association (JPDA). Although the exact computation of association probabilities in JPDA is NP-hard, we prove that the single-scan MCMCDA algorithm provides a fully polynomial randomized approximation scheme for JPDA. For general multi-target tracking problems, in which unknown numbers of targets appear and disappear at random times, we present a multi-scan MCMCDA algorithm that approximates the optimal Bayesian filter. We also present extensive simulation studies supporting theoretical results in this paper. Our simulation results also show that MCMCDA outperforms multiple hypothesis tracking (MHT) by a significant margin in terms of accuracy and efficiency under extreme conditions, such as a large number of targets in a dense environment, low detection probabilities, and high false alarm rates.
  • Bibtex entry: 
@ARTICLE { OhRussellSastry-TAC:2009,
  author  = {Songhwai Oh and Stuart Russell and Shankar Sastry},
  title   = {Markov Chain {M}onte {C}arlo Data Association for Multi-Target Tracking}, 
  journal = {IEEE Trans. Automatic Control},
  volume  = {54},
  number  = {3},
  pages   = {481--497},
  month   = {March},
  year    = {2009}


This example is provided in DEMO.m. There are three steps and examples are shown below.

  • Generate trajectories of targets.
>> gen_trajectory('demo_traj',10,50,30,100,5,1,1);


  • Generate a scenario with cluttered measurements based on the generated trajectories. Dots represent measurements in 2D.


  • Run multi-scan MCMCDA for tracking multiple targets. While the program is running, you can watch the evolution of tracks established by multi-scan MCMCDA.



This software is made available for free for non-commercial use. The software must not be modified or distributed without prior permission of the author. Please send your request to In your email, please include your name and institution. By submitting this request you agree to be bound by this license.