]> Creatis software - cpPlugins.git/commitdiff
...
authorLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Thu, 3 Sep 2015 23:08:22 +0000 (18:08 -0500)
committerLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Thu, 3 Sep 2015 23:08:22 +0000 (18:08 -0500)
appli/examples/CMakeLists.txt
lib/cpPlugins/Extensions/Algorithms/KalmanFilter.hxx

index 70ea3ee489a20c7c9f2e67dbc4db5c66c7857ed8..1da1a2e68b65a13ab90fa91b18f3efd4fd4f634c 100644 (file)
@@ -39,6 +39,7 @@ SET(
   example_3DImageGradient
   example_2DGulsunTekMedialness
   example_3DGulsunTekMedialness
+  example_KalmanVelocity
   )
 FOREACH(prog ${NOPLUGINS_EXAMPLES_PROGRAMS}) 
   ADD_EXECUTABLE(
index 0e4f106e14cbffe760f97cf7ddbcedb80fe56331..a75fb7f6b833c4cdf4d0828de544571bbc55b6b5 100644 (file)
@@ -7,20 +7,23 @@ template< class M >
 void cpPlugins::Extensions::Algorithms::KalmanFilter< T >::
 Kronecker( M& AkB, const M& A, const M& B )
 {
-  unsigned int Ar = A.rows( ); unsigned int Ac = A.cols( );
-  unsigned int Br = B.rows( ); unsigned int Bc = B.cols( );
-  AkB.set_size( Ar * Br, Ac * Bc );
+  unsigned int m = A.rows( ); unsigned int n = A.cols( );
+  unsigned int p = B.rows( ); unsigned int q = B.cols( );
+  AkB.set_size( m * p, n * q );
 
-  for( unsigned int ar = 0; ar < Ar; ar++ )
+  for( unsigned int i = 1; i <= m; ++i )
   {
-    for( unsigned int ac = 0; ac < Ac; ac++ )
+    for( unsigned int j = 1; j <= n; ++j )
     {
-      typename M::element_type vA = A[ ar ][ ac ];
-      for( unsigned int br = 0; br < Br; br++ )
+      for( unsigned int k = 1; k <= p; ++k )
       {
-        unsigned int rOff = ar + ( br * ( Br - 1 ) );
-        for( unsigned int bc = 0; bc < Bc; bc++ )
-          AkB[ rOff ][ ac + ( bc * ( Bc - 1 ) ) ] = vA * B[ br ][ bc ];
+        for( unsigned int l = 1; l <= q; ++l )
+        {
+          unsigned int al = ( ( p * ( i - 1 ) ) + k ) - 1;
+          unsigned int be = ( ( q * ( j - 1 ) ) + l ) - 1;
+          AkB[ al ][ be ] = A[ i - 1 ][ j - 1 ] * B[ k - 1 ][ l - 1 ];
+
+        } // rof
 
       } // rof