Index: /bdm/estim/mixef.cpp
===================================================================
--- /bdm/estim/mixef.cpp (revision 189)
+++ /bdm/estim/mixef.cpp (revision 195)
@@ -29,5 +29,5 @@
 	for ( i=0;i<n;i++ ) {
 		//pick one datum
-		int ind=ndat*UniRNG.sample();
+		int ind=floor(ndat*UniRNG.sample());
 		Coms ( i )->bayes ( Data.get_col ( ind ),1.0 );
 	}
@@ -42,5 +42,5 @@
 	int ndat=data.cols();
 	int t,i,niter;
-	bool converged;
+	bool converged=false;
 
 	multiBM weights0 ( weights );
Index: /doprava/model.h
===================================================================
--- /doprava/model.h (revision 195)
+++ /doprava/model.h (revision 195)
@@ -0,0 +1,72 @@
+#ifndef MODEL_H
+#define MODEL_H
+
+#include <stat/libFN.h>
+
+//Tady se naplni "popis" jednotlivych nahodnych velicin na kterych se pracuje
+// Moznosti je velmi mnoho (viz doc/html/index.html): napriklad
+RV RVstav ( "{stav }", "4");  // Vyrabim stav velikosti 4
+RV RVut ( "{ut }", "2");     // Vstup velikosti 2
+RV RVpozor ( "{I1 O1 }");     //Vystup je intenzita a obsazenost
+
+//! Model stredni hodnoty vyvoje stavu pro k1 
+class IMk1 : public diffbifn {
+protected:
+	double alp1, alp2; // pomery odboceni...
+
+public:
+	//! Constructor
+	IMk1() :diffbifn (RVstav.count(), RVstav, RVut ) {}; 
+	//! set CONSTANT parameters
+	void set_parameters ( double alp10,  double alp20) {alp1=alp10; alp2=alp20;}
+
+	vec eval ( const vec &x0, const vec &u0 ) {
+		// napln stav nulami
+		vec xk=zeros ( RVstav.count() );
+
+		xk ( 0 ) = 2* x0(1) - 1.8* x0(2);  // vycucane z prstu
+		xk ( 1 ) = x0( 0); 
+		xk ( 2 ) = x0(1);
+		xk ( 3 ) = x0(2);
+
+		return xk;
+	}
+
+	void dfdx_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) {
+		// Vysledek se uklada do matice A
+
+		if (full) { // priznak full se nastavi na zacatku => je treba naplnit celou matici
+			A = eye(RVstav.count());
+		} else {}; // pokud neni priznak full, staci naplnit jen to co se zmenilo. V tomhle pripade se nemeni nic
+	}
+
+	void dfdu_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) {it_error ( "not needed" );};
+
+};
+
+//! model stredni hodnoty pozorovani pro k1
+class OMk1 : public diffbifn {
+public:
+	//! Constructor
+	OMk1() :diffbifn (RVpozor.count(), RVstav, RVut ) {}; 
+	// Model pozorovani  je trivialni jen se zkopiruji stavy
+	vec eval(const vec &x0, const vec &u0 ){
+		vec dt(RVpozor.count());
+		// Pozoruji pouze prvni dva stavy
+		dt(0) = x0(0);
+		dt(1) = x0(1); 
+		return dt;
+	}
+	//
+	void dfdx_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) {
+		// Vysledek se uklada do matice A
+
+		if (full) { // priznak full se nastavi na zacatku => je treba naplnit celou matici
+			A = zeros(RVpozor.count(),RVstav.count());
+			A(0,0)=1.0;
+			A(1,1)=1.0;
+		} else {}; // pokud neni priznak full, staci naplnit jen to co se zmenilo. V tomhle pripade se nemeni nic
+	}
+};
+
+#endif //MODEL_H
Index: /doprava/k1.cpp
===================================================================
--- /doprava/k1.cpp (revision 195)
+++ /doprava/k1.cpp (revision 195)
@@ -0,0 +1,91 @@
+/*!
+  \file
+  \brief Models for synchronous electric drive using IT++ and BDM
+  \author Vaclav Smidl.
+
+  -----------------------------------
+  BDM++ - C++ library for Bayesian Decision Making under Uncertainty
+
+  Using IT++ for numerical operations
+  -----------------------------------
+*/
+
+#include <itpp/itbase.h>
+#include <stat/libFN.h>
+#include <estim/ekf_templ.h>
+#include <stat/loggers.h>
+
+//include dopravni model
+#include "model.h"
+
+using namespace itpp;
+
+int main() {
+	// Pocet dat
+	int Ndat = 900;
+
+	// Objekt pro ukladani vysledku
+	memlog L(Ndat);
+
+	//model vyvoje stavu
+	IMk1 fxu;
+	fxu.set_parameters (0.5, 0.5); // pokud nejake budou
+
+	//model pozorovani
+	OMk1 hxu;
+	//hxu.set_parameters (); // odkomentovat pokud budou
+
+	// ESTIMATOR --- EKF
+	vec mu0= "0.0 0.0 0.0 0.0";
+	// Priprava covariancnich matic pro EKF
+	vec Qdiag ( "1.0 10. 10 10" ); 
+	vec Rdiag ( "1 1" ); //var(diff(xth)) = "0.034 0.034"
+	mat Q =diag( Qdiag );
+	mat R =diag ( Rdiag );
+	EKFfull Efix ( RVstav,RVpozor,RVut );
+	// pocatecni podminky
+	Efix.set_est ( mu0, 1*eye ( 4 )  ); // nulova 
+	// nastaveni modelu pro EKF
+	Efix.set_parameters ( &fxu,&hxu,Q,R);
+
+	int L_xt = L.add(RVstav, "xt"); // Tady se rika jak velky vektor (pomoci obj. RV) se bude logovat 
+										// A jak se bude jsmenovat vysledek
+	int L_ut = L.add(RVut, "ut"); // Tady se rika jak velky vektor (pomoci obj. RV) se bude logovat 
+										// A jak se bude jsmenovat vysledek
+	int L_mean = L.add(RVstav, "odh_xt"); // Tady se rika jak velky vektor (pomoci obj. RV) se bude logovat 
+										// A jak se bude jsmenovat vysledek
+
+	L.init(); // <<==== allocate memory for results
+
+	// Priprava poli pro simulaci
+	vec ut(RVut.count()); 
+	vec xt(RVstav.count()); 
+	vec dt(RVpozor.count()); 
+	// minuly stav
+	vec xtm=zeros(RVstav.count()); // nulovy pocatecni stav
+	for ( int t=1;t<Ndat;t++ ) {
+		// Nastaveni vstupu
+		ut(0) = 1+sin((double)t/10); // V ut jsou same jednicky
+		ut(1) = 1+cos((double)t/10); // V ut jsou same jednicky
+		
+		// Generovani DAT modelem
+		xt = fxu.eval(xtm,ut);
+		dt = hxu.eval(xt,ut);
+
+		//ESTIMATE
+		Efix.bayes(concat(dt,ut));
+
+		//LOG results
+		L.logit(L_mean, Efix._epdf().mean() ); 
+		L.logit(L_xt, xt ); 
+		L.logit(L_ut, ut ); 
+		
+		L.step();
+	}
+
+	L.finalize();
+	L.itsave("k1.it");	
+
+	return 0;
+}
+
Index: /doprava/CMakeLists.txt
===================================================================
--- /doprava/CMakeLists.txt (revision 195)
+++ /doprava/CMakeLists.txt (revision 195)
@@ -0,0 +1,20 @@
+# Make sure the compiler can find include files from our Bdm library.
+include_directories (${BDM_SOURCE_DIR}/bdm)
+
+# Make sure the linker can find the bdm library once it is built.
+link_directories (${BDM_BINARY_DIR}/bdm)
+
+
+## Save all needed libraries in variable BdmLibs
+#SET(BdmLibs bdm itpp_debug)
+SET(BdmLibs bdm itpp)
+
+IF(WIN32)
+	SET(BdmLibs ${BdmLibs} libacml_dll)
+ENDIF(WIN32)
+
+# Add executable called "helloDemo" that is built from the source files
+# "demo.cxx" and "demo_b.cxx".  The extensions are automatically found.
+add_executable (k1 k1.cpp)
+# Link the executable to the Hello library.
+target_link_libraries (k1 ${BdmLibs})
Index: /CMakeLists.txt
===================================================================
--- /CMakeLists.txt (revision 180)
+++ /CMakeLists.txt (revision 195)
@@ -60,2 +60,3 @@
 add_subdirectory (pmsm)
 add_subdirectory (mpdm)
+add_subdirectory (doprava)
