/*!
\mainpage Matlab toolbox using BDM library (BDMToolbox)

\version 0.1

\author Vaclav Smidl

BDMToolbox is a high-level front-end to low level C++ routines of BDM.

It has three main categories of use cases:

\section bdt_int_ready Standard scenarios
 Typical decision-making scenarios has been prepared as standalone functions, which can be configured using 
Matlab structures with definition of experimental conditions. \n
These include:
 - simulation, as a trivial example, where data are generated by a chosen simulator (or any prepared DataSource) and stored in the required format,
 - estimation, same as the simulation scenario above extended by connection to an array of estimators,
 - feedback control, where the systems simulator (or real system) is connected to an array of controllers. 
 - multiple-participant decision making, where autonomous agents operate in their environment.

The purpose of this use case is to create a consistent experimental environment for rapid exploration of new data, 
new application domains, where different estimation and control algorithms can be quickly exchanges and mutually compared.

See \ref bdt_scenarios for details.


\section bdt_int_wrap Matlab interface to C++ algorithms

Selected individual algorithms of the BDM toolbox are accessible via dedicated mex functions.
These mex functions operate as follows:
 -# Matlab structures on their input is translated into C++ data structures
 -# run the required algorithm,
 -# the output is again converted to Matlab structures.

The purpose of this use case is to allow composition of existing algorithms in a new arrangement. 
For example, it allows non-standard steps in the main loop, manipulation with configuration structures of scenarios, 
novel combination of conditionally independent filters, etc.

See, \ref bdt_wrappers for details.

\section bdt_int_class Matlab classes extending BDM classes

These classes are pure Matlab classes and can be used without BDM.

However, their main advantage is that BDM attach to these classes and use them via C++ classes (e.g. mexEpdf and mexBM). Hence, these classes can be used as building blocks in advances 
algorithms implemented in BDM.

The purpose of this use case is to allow seamless integration of pure Matlab algorithm into the routines of BDM. 

See \ref bdt_mex_bdm for details

 */
