]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Algorithms/KalmanFilter.hxx
...
[cpPlugins.git] / lib / cpExtensions / Algorithms / KalmanFilter.hxx
1 #ifndef __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__HXX__
2 #define __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__HXX__
3
4 // -------------------------------------------------------------------------
5 template< typename T >
6 template< class M >
7 void cpExtensions::Algorithms::KalmanFilter< T >::
8 Kronecker( M& AkB, const M& A, const M& B )
9 {
10   unsigned int m = A.rows( ); unsigned int n = A.cols( );
11   unsigned int p = B.rows( ); unsigned int q = B.cols( );
12   AkB.set_size( m * p, n * q );
13
14   for( unsigned int i = 1; i <= m; ++i )
15   {
16     for( unsigned int j = 1; j <= n; ++j )
17     {
18       for( unsigned int k = 1; k <= p; ++k )
19       {
20         for( unsigned int l = 1; l <= q; ++l )
21         {
22           unsigned int al = ( ( p * ( i - 1 ) ) + k ) - 1;
23           unsigned int be = ( ( q * ( j - 1 ) ) + l ) - 1;
24           AkB[ al ][ be ] = A[ i - 1 ][ j - 1 ] * B[ k - 1 ][ l - 1 ];
25
26         } // rof
27
28       } // rof
29
30     } // rof
31
32   } // rof
33 }
34
35 #endif // __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__HXX__
36
37 // eof - $RCSfile$