Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00033 #ifndef ACADO_TOOLKIT_BLOCK_MATRIX_HPP
00034 #define ACADO_TOOLKIT_BLOCK_MATRIX_HPP
00035
00036 #include <acado/utils/acado_types.hpp>
00037
00038 BEGIN_NAMESPACE_ACADO
00039
00052 class BlockMatrix
00053 {
00054
00055
00056
00057 public:
00058
00060 BlockMatrix( );
00061
00063 BlockMatrix( uint _nRows,
00064 uint _nCols );
00065
00067 BlockMatrix( const DMatrix& value
00068 );
00069
00071 virtual ~BlockMatrix( );
00072
00074 returnValue init( uint _nRows, uint _nCols );
00075
00078 returnValue setDense( uint rowIdx,
00079 uint colIdx,
00080 const DMatrix& value );
00081
00084 returnValue addDense( uint rowIdx,
00085 uint colIdx,
00086 const DMatrix& value );
00087
00091 inline returnValue getSubBlock( uint rowIdx,
00092 uint colIdx,
00093 DMatrix &value ) const;
00094
00099 returnValue getSubBlock( uint rowIdx,
00100 uint colIdx,
00101 DMatrix &value,
00102 uint nR,
00103 uint nC ) const;
00104
00107 BlockMatrix operator+( const BlockMatrix& arg ) const;
00108
00111 BlockMatrix& operator+=( const BlockMatrix& arg );
00112
00116 BlockMatrix operator-( const BlockMatrix& arg ) const;
00117
00120 BlockMatrix operator*=( double scalar );
00121
00125 BlockMatrix operator*( const BlockMatrix& arg ) const;
00126
00130 BlockMatrix operator^( const BlockMatrix& arg ) const;
00131
00134 inline uint getNumRows( ) const;
00135
00138 inline uint getNumCols( ) const;
00139
00142 inline uint getNumRows( uint rowIdx, uint colIdx ) const;
00143
00146 inline uint getNumCols( uint rowIdx, uint colIdx ) const;
00147
00150 inline returnValue setIdentity( uint rowIdx,
00151 uint colIdx,
00152 uint dim );
00153
00156 inline returnValue setZero( uint rowIdx, uint colIdx );
00157
00159 inline bool isEmpty() const;
00160
00163 inline returnValue setZero();
00164
00167 inline returnValue addRegularisation( uint rowIdx, uint colIdx, double eps );
00168
00171 inline BlockMatrix addRegularisation( double eps );
00172
00174 BlockMatrix transpose() const;
00175
00178 inline bool isSquare( ) const;
00179
00182 inline bool isSquare( uint rowIdx, uint colIdx ) const;
00183
00187 BlockMatrix getAbsolute( ) const;
00188
00193 BlockMatrix getPositive( ) const;
00194
00199 BlockMatrix getNegative( ) const;
00200
00203 returnValue print( std::ostream& stream = std::cout
00204 ) const;
00205
00206
00207
00208
00209 protected:
00210
00211 uint nRows;
00212 uint nCols;
00214 std::vector< std::vector< DMatrix > > elements;
00215 std::vector< std::vector< SubBlockMatrixType > > types;
00216 };
00217
00218 static BlockMatrix emptyBlockMatrix;
00219 static const BlockMatrix emptyConstBlockMatrix;
00220
00221 CLOSE_NAMESPACE_ACADO
00222
00223 #include <acado/matrix_vector/block_matrix.ipp>
00224
00225 #endif // ACADO_TOOLKIT_BLOCK_MATRIX_HPP
00226
00227
00228
00229