1 #ifndef __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__HXX__
2 #define __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__HXX__
4 // -------------------------------------------------------------------------
7 void cpExtensions::Algorithms::KalmanFilter< T >::
8 Kronecker( M& AkB, const M& A, const M& B )
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 );
14 for( unsigned int i = 1; i <= m; ++i )
16 for( unsigned int j = 1; j <= n; ++j )
18 for( unsigned int k = 1; k <= p; ++k )
20 for( unsigned int l = 1; l <= q; ++l )
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 ];
35 #endif // __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__HXX__