Sample of program breaking when a certain set of source files are in a folder, but is fine when it is in the root. In this case, it is tested with RF12B.cpp, RF12B.h and rfdefs

Dependencies:   mbed

Committer:
narshu
Date:
Sun Mar 25 13:39:11 2012 +0000
Revision:
0:349dc9b0984f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
narshu 0:349dc9b0984f 1 /**
narshu 0:349dc9b0984f 2 * @brief API for Matrix Library
narshu 0:349dc9b0984f 3 * @file Matrix.h
narshu 0:349dc9b0984f 4 * @author Ernesto Palacios
narshu 0:349dc9b0984f 5 *
narshu 0:349dc9b0984f 6 * Created on 13 de septiembre de 2011, 03:49 PM
narshu 0:349dc9b0984f 7 *
narshu 0:349dc9b0984f 8 * Develop Under GPL v3.0 License
narshu 0:349dc9b0984f 9 * http://www.gnu.org/licenses/gpl-3.0.html
narshu 0:349dc9b0984f 10 *
narshu 0:349dc9b0984f 11 */
narshu 0:349dc9b0984f 12
narshu 0:349dc9b0984f 13 #ifndef MATRIX_H
narshu 0:349dc9b0984f 14 #define MATRIX_H
narshu 0:349dc9b0984f 15
narshu 0:349dc9b0984f 16
narshu 0:349dc9b0984f 17 #include <vector>
narshu 0:349dc9b0984f 18
narshu 0:349dc9b0984f 19 class MatrixMath;
narshu 0:349dc9b0984f 20
narshu 0:349dc9b0984f 21 /**
narshu 0:349dc9b0984f 22 * @brief This class provide basic manipulation for 2D matrices see Log.c for more info
narshu 0:349dc9b0984f 23 * version 1.6.4.
narshu 0:349dc9b0984f 24 *
narshu 0:349dc9b0984f 25 */
narshu 0:349dc9b0984f 26 class Matrix{
narshu 0:349dc9b0984f 27 public:
narshu 0:349dc9b0984f 28
narshu 0:349dc9b0984f 29 /// Creates a nex Matrix of Size [ Row x Cols ]
narshu 0:349dc9b0984f 30 Matrix( int Rows, int Cols );
narshu 0:349dc9b0984f 31
narshu 0:349dc9b0984f 32
narshu 0:349dc9b0984f 33 /// Creates a new Matrix identical to an input Matrix
narshu 0:349dc9b0984f 34 Matrix( const Matrix& base );
narshu 0:349dc9b0984f 35
narshu 0:349dc9b0984f 36
narshu 0:349dc9b0984f 37 /// Default Constructor
narshu 0:349dc9b0984f 38 Matrix();
narshu 0:349dc9b0984f 39
narshu 0:349dc9b0984f 40
narshu 0:349dc9b0984f 41 /******************************************************************************/
narshu 0:349dc9b0984f 42
narshu 0:349dc9b0984f 43
narshu 0:349dc9b0984f 44 /**@brief This includes the Class to handle Matrix Operations.
narshu 0:349dc9b0984f 45 */
narshu 0:349dc9b0984f 46 friend class MatrixMath;
narshu 0:349dc9b0984f 47
narshu 0:349dc9b0984f 48
narshu 0:349dc9b0984f 49 /**@brief
narshu 0:349dc9b0984f 50 * Subindex for Matrix elements assignation.
narshu 0:349dc9b0984f 51 * @param row
narshu 0:349dc9b0984f 52 * @param col
narshu 0:349dc9b0984f 53 * @return pointer to the element.
narshu 0:349dc9b0984f 54 */
narshu 0:349dc9b0984f 55 float& operator() ( int row, int col );
narshu 0:349dc9b0984f 56
narshu 0:349dc9b0984f 57
narshu 0:349dc9b0984f 58 /**@brief
narshu 0:349dc9b0984f 59 *Subindex for Matrix element.
narshu 0:349dc9b0984f 60 * @param row
narshu 0:349dc9b0984f 61 * @param col
narshu 0:349dc9b0984f 62 * @return the element.
narshu 0:349dc9b0984f 63 */
narshu 0:349dc9b0984f 64 float operator() ( int row, int col ) const;
narshu 0:349dc9b0984f 65
narshu 0:349dc9b0984f 66
narshu 0:349dc9b0984f 67
narshu 0:349dc9b0984f 68 /** @brief
narshu 0:349dc9b0984f 69 * Overwrites all data. To be used Carefully!
narshu 0:349dc9b0984f 70 */
narshu 0:349dc9b0984f 71 Matrix& operator = ( const Matrix& rightM );
narshu 0:349dc9b0984f 72
narshu 0:349dc9b0984f 73
narshu 0:349dc9b0984f 74 /** @brief
narshu 0:349dc9b0984f 75 * Overload opeartor for the compare Matrices
narshu 0:349dc9b0984f 76 *
narshu 0:349dc9b0984f 77 * @param rightM
narshu 0:349dc9b0984f 78 * @return Boolean 'false' if different.
narshu 0:349dc9b0984f 79 */
narshu 0:349dc9b0984f 80 friend bool operator == ( const Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 81
narshu 0:349dc9b0984f 82
narshu 0:349dc9b0984f 83 /** @brief
narshu 0:349dc9b0984f 84 * Overload opeartor for the compare Matrices
narshu 0:349dc9b0984f 85 *
narshu 0:349dc9b0984f 86 * @param rightM
narshu 0:349dc9b0984f 87 * @return Boolean 'true' if different
narshu 0:349dc9b0984f 88 */
narshu 0:349dc9b0984f 89 friend bool operator != ( const Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 90
narshu 0:349dc9b0984f 91
narshu 0:349dc9b0984f 92 /** @brief
narshu 0:349dc9b0984f 93 * Overload Copmpound assignment.
narshu 0:349dc9b0984f 94 * @param rightM
narshu 0:349dc9b0984f 95 * @return A new Matrix to be assigned to itself.
narshu 0:349dc9b0984f 96 */
narshu 0:349dc9b0984f 97 friend Matrix& operator += ( Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 98
narshu 0:349dc9b0984f 99
narshu 0:349dc9b0984f 100 /** @brief
narshu 0:349dc9b0984f 101 * Overload Compund decrease.
narshu 0:349dc9b0984f 102 * @param rightM Right hand matrix
narshu 0:349dc9b0984f 103 * @return A new Matrix to be assigned to itself
narshu 0:349dc9b0984f 104 */
narshu 0:349dc9b0984f 105 friend Matrix& operator -= ( Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 106
narshu 0:349dc9b0984f 107
narshu 0:349dc9b0984f 108 /** @brief
narshu 0:349dc9b0984f 109 * Overload Compound CrossProduct Matrix operation.
narshu 0:349dc9b0984f 110 * @param rightM
narshu 0:349dc9b0984f 111 * @return
narshu 0:349dc9b0984f 112 */
narshu 0:349dc9b0984f 113 friend Matrix& operator *=( Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 114
narshu 0:349dc9b0984f 115
narshu 0:349dc9b0984f 116 /** @brief
narshu 0:349dc9b0984f 117 * Overload Compund Element-by-elemnt scalar multiplication.
narshu 0:349dc9b0984f 118 * @param number
narshu 0:349dc9b0984f 119 * @return
narshu 0:349dc9b0984f 120 */
narshu 0:349dc9b0984f 121 friend Matrix& operator *=( Matrix& leftM, float number );
narshu 0:349dc9b0984f 122
narshu 0:349dc9b0984f 123
narshu 0:349dc9b0984f 124
narshu 0:349dc9b0984f 125 /**@brief
narshu 0:349dc9b0984f 126 * All elements in matrix are multiplied by (-1).
narshu 0:349dc9b0984f 127 * @return A new Matrix object with inverted values.
narshu 0:349dc9b0984f 128 */
narshu 0:349dc9b0984f 129 const Matrix operator -();
narshu 0:349dc9b0984f 130
narshu 0:349dc9b0984f 131
narshu 0:349dc9b0984f 132 /**@brief
narshu 0:349dc9b0984f 133 * Overload Compound add with scalar.
narshu 0:349dc9b0984f 134 * Because the '=' operator checks for self Assign, no extra operations
narshu 0:349dc9b0984f 135 * are needed.
narshu 0:349dc9b0984f 136 * @return Same Matrix to self Assign.
narshu 0:349dc9b0984f 137 */
narshu 0:349dc9b0984f 138 friend const Matrix operator +=( Matrix& leftM, float number );
narshu 0:349dc9b0984f 139
narshu 0:349dc9b0984f 140
narshu 0:349dc9b0984f 141 /**@brief
narshu 0:349dc9b0984f 142 * Compound substract with scalar.
narshu 0:349dc9b0984f 143 * @return Same matrix to self Assign.
narshu 0:349dc9b0984f 144 */
narshu 0:349dc9b0984f 145 friend const Matrix operator -=( Matrix& leftM, float number );
narshu 0:349dc9b0984f 146
narshu 0:349dc9b0984f 147
narshu 0:349dc9b0984f 148 /** @brief
narshu 0:349dc9b0984f 149 * Adds two matrices of the same dimensions, element-by-element.
narshu 0:349dc9b0984f 150 * If diferent dimensions -> ERROR.
narshu 0:349dc9b0984f 151 * @return A new object Matrix with the result.
narshu 0:349dc9b0984f 152 */
narshu 0:349dc9b0984f 153 friend const Matrix operator +( const Matrix& leftM, const Matrix& rightM);
narshu 0:349dc9b0984f 154
narshu 0:349dc9b0984f 155
narshu 0:349dc9b0984f 156 /** @brief
narshu 0:349dc9b0984f 157 * Adds the given nomber to each element of matrix.
narshu 0:349dc9b0984f 158 * Mimic MATLAB operation.
narshu 0:349dc9b0984f 159 * @return A new matrix object with the result.
narshu 0:349dc9b0984f 160 */
narshu 0:349dc9b0984f 161 friend const Matrix operator +( const Matrix& leftM, float number );
narshu 0:349dc9b0984f 162
narshu 0:349dc9b0984f 163
narshu 0:349dc9b0984f 164
narshu 0:349dc9b0984f 165 /**@brief
narshu 0:349dc9b0984f 166 * Adds the given number to each element in Matrix.
narshu 0:349dc9b0984f 167 * @return A new Matrix object with the result.
narshu 0:349dc9b0984f 168 */
narshu 0:349dc9b0984f 169 friend const Matrix operator +( float number, const Matrix& leftM );
narshu 0:349dc9b0984f 170
narshu 0:349dc9b0984f 171
narshu 0:349dc9b0984f 172 /**@brief
narshu 0:349dc9b0984f 173 * Substracts two matrices of the same size, element-by-element.
narshu 0:349dc9b0984f 174 * If different dimensions -> ERROR.
narshu 0:349dc9b0984f 175 * @return A new object Matrix with the result.
narshu 0:349dc9b0984f 176 */
narshu 0:349dc9b0984f 177 friend const Matrix operator -( const Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 178
narshu 0:349dc9b0984f 179
narshu 0:349dc9b0984f 180 /**@brief
narshu 0:349dc9b0984f 181 * Substracts each element in Matrix by number.
narshu 0:349dc9b0984f 182 * @return A new matrix object with the result.
narshu 0:349dc9b0984f 183 */
narshu 0:349dc9b0984f 184 friend const Matrix operator -( const Matrix& leftM, float number );
narshu 0:349dc9b0984f 185
narshu 0:349dc9b0984f 186
narshu 0:349dc9b0984f 187 /**@brief
narshu 0:349dc9b0984f 188 * Substracts each element in Matrix by number
narshu 0:349dc9b0984f 189 * @return A new matrix object with the result.
narshu 0:349dc9b0984f 190 */
narshu 0:349dc9b0984f 191 friend const Matrix operator -( float number, const Matrix& leftM );
narshu 0:349dc9b0984f 192
narshu 0:349dc9b0984f 193
narshu 0:349dc9b0984f 194 /**
narshu 0:349dc9b0984f 195 * Preforms Crossproduct between two matrices.
narshu 0:349dc9b0984f 196 * @return
narshu 0:349dc9b0984f 197 */
narshu 0:349dc9b0984f 198 friend const Matrix operator *( const Matrix& leftM, const Matrix& rightM );
narshu 0:349dc9b0984f 199
narshu 0:349dc9b0984f 200
narshu 0:349dc9b0984f 201 /**@brief
narshu 0:349dc9b0984f 202 * Multiplies a scalar number with each element on Matrix.
narshu 0:349dc9b0984f 203 * @return A new object with the result.
narshu 0:349dc9b0984f 204 */
narshu 0:349dc9b0984f 205 friend const Matrix operator *( const Matrix& leftM, float number );
narshu 0:349dc9b0984f 206
narshu 0:349dc9b0984f 207
narshu 0:349dc9b0984f 208 /**@brief
narshu 0:349dc9b0984f 209 * Multiplies a scalar number with each element on Matrix.
narshu 0:349dc9b0984f 210 * @return
narshu 0:349dc9b0984f 211 */
narshu 0:349dc9b0984f 212 friend const Matrix operator *( float number, const Matrix& leftM );
narshu 0:349dc9b0984f 213
narshu 0:349dc9b0984f 214
narshu 0:349dc9b0984f 215 /**@brief
narshu 0:349dc9b0984f 216 * Inputs numbres into a Matrix, the matrix needs to be costructed as
narshu 0:349dc9b0984f 217 * Matrix( _nRows, _nCols ).
narshu 0:349dc9b0984f 218 * This does NOT work on an only declared Matrix such as:
narshu 0:349dc9b0984f 219 * Matrix obj;
narshu 0:349dc9b0984f 220 * obj << 5; //Error
narshu 0:349dc9b0984f 221 * @return
narshu 0:349dc9b0984f 222 */
narshu 0:349dc9b0984f 223 friend Matrix& operator <<( Matrix& leftM, float number );
narshu 0:349dc9b0984f 224
narshu 0:349dc9b0984f 225 /***********************************************************************/
narshu 0:349dc9b0984f 226
narshu 0:349dc9b0984f 227 /** @brief
narshu 0:349dc9b0984f 228 * Returns TRUE if the matrix is zero, FALSE otherwhise
narshu 0:349dc9b0984f 229 * @param mat: Matrix to be tested
narshu 0:349dc9b0984f 230 */
narshu 0:349dc9b0984f 231 bool isZero() const;
narshu 0:349dc9b0984f 232
narshu 0:349dc9b0984f 233
narshu 0:349dc9b0984f 234 /** @brief
narshu 0:349dc9b0984f 235 * Determines weather a Matrix is a Single Column or Row.
narshu 0:349dc9b0984f 236 */
narshu 0:349dc9b0984f 237 bool isVector() const;
narshu 0:349dc9b0984f 238
narshu 0:349dc9b0984f 239
narshu 0:349dc9b0984f 240 /** @brief
narshu 0:349dc9b0984f 241 * Shatters the matrix into a single Row Vector.
narshu 0:349dc9b0984f 242 * Important: Returns NEW matrix, does no modify existing one.
narshu 0:349dc9b0984f 243 */
narshu 0:349dc9b0984f 244 static const Matrix ToPackedVector( const Matrix& Mat );
narshu 0:349dc9b0984f 245
narshu 0:349dc9b0984f 246
narshu 0:349dc9b0984f 247 /** @brief
narshu 0:349dc9b0984f 248 * Invoking this static method will increase a Row in Mat in the desired
narshu 0:349dc9b0984f 249 * position.
narshu 0:349dc9b0984f 250 * The current Row will be moved down to allocate space, and all elements will
narshu 0:349dc9b0984f 251 * be initialized to zero in the new row.
narshu 0:349dc9b0984f 252 * @param Mat: Matrix in wich to insert a Row
narshu 0:349dc9b0984f 253 * @param Row: Number of row to insert, starts with one, not zero.
narshu 0:349dc9b0984f 254 */
narshu 0:349dc9b0984f 255 static void AddRow( Matrix& Mat, int index );
narshu 0:349dc9b0984f 256
narshu 0:349dc9b0984f 257
narshu 0:349dc9b0984f 258 /**@brief
narshu 0:349dc9b0984f 259 * Adds to Receip a new Row from another Matrix in desired index.
narshu 0:349dc9b0984f 260 * Must be same size.
narshu 0:349dc9b0984f 261 * The Row matrix must be SingleRow Matrix, you can use ExportRow
narshu 0:349dc9b0984f 262 * to extract a Row from another Matrix.
narshu 0:349dc9b0984f 263 * @param Receip Matrix to be Modified.
narshu 0:349dc9b0984f 264 * @param Row Row to be added.
narshu 0:349dc9b0984f 265 * @param index position in wich to be added, _nRow + 1 last position.
narshu 0:349dc9b0984f 266 */
narshu 0:349dc9b0984f 267 static void AddRow( Matrix& Receip, const Matrix& Row, int index );
narshu 0:349dc9b0984f 268
narshu 0:349dc9b0984f 269
narshu 0:349dc9b0984f 270 /** @brief
narshu 0:349dc9b0984f 271 * Invoking this static method will increase a Column in Matrix in the
narshu 0:349dc9b0984f 272 * desired Position.
narshu 0:349dc9b0984f 273 * @param Mat: Matrix in wich to insert a Column
narshu 0:349dc9b0984f 274 * @param Col: Number of column, strats with one, not zero.
narshu 0:349dc9b0984f 275 */
narshu 0:349dc9b0984f 276 static void AddCol( Matrix& Mat, int index );
narshu 0:349dc9b0984f 277
narshu 0:349dc9b0984f 278
narshu 0:349dc9b0984f 279 /**@brief
narshu 0:349dc9b0984f 280 * This will copy a Column Matrix into Receip in desired Position,
narshu 0:349dc9b0984f 281 * Must be same size.
narshu 0:349dc9b0984f 282 * The Col Matrix must be a SingleCol Matrix, you can use ExportCol
narshu 0:349dc9b0984f 283 * to extract a Column from another Matrix.
narshu 0:349dc9b0984f 284 * @param Receip Matrix to be modified.
narshu 0:349dc9b0984f 285 * @param Column Data to be copied.
narshu 0:349dc9b0984f 286 * @param index Postion in Receip Matrix .
narshu 0:349dc9b0984f 287 */
narshu 0:349dc9b0984f 288 static void AddCol( Matrix& Receip, const Matrix& Col, int index );
narshu 0:349dc9b0984f 289
narshu 0:349dc9b0984f 290
narshu 0:349dc9b0984f 291 /** @brief
narshu 0:349dc9b0984f 292 * Static Function Deletes Row from Matrix, Static to prevent missuse
narshu 0:349dc9b0984f 293 * @param Mat: Matrix to delete Row from
narshu 0:349dc9b0984f 294 * @param Row: Number of Row (first Row = 1)
narshu 0:349dc9b0984f 295 */
narshu 0:349dc9b0984f 296 static void DeleteRow( Matrix& Mat, int Row );
narshu 0:349dc9b0984f 297
narshu 0:349dc9b0984f 298
narshu 0:349dc9b0984f 299 /** @brief
narshu 0:349dc9b0984f 300 * Static Function Deletes Column from Matrix, it's Static to prevent
narshu 0:349dc9b0984f 301 * missuse.
narshu 0:349dc9b0984f 302 * Print error and does nothing if out of limits.
narshu 0:349dc9b0984f 303 * @param Col: Number of Col to delete (first Col = 1)
narshu 0:349dc9b0984f 304 * @param Mat: Matrix to delete from.
narshu 0:349dc9b0984f 305 */
narshu 0:349dc9b0984f 306 static void DeleteCol( Matrix& Mat, int Col );
narshu 0:349dc9b0984f 307
narshu 0:349dc9b0984f 308
narshu 0:349dc9b0984f 309 /** @brief
narshu 0:349dc9b0984f 310 * This method extracts a Row from a Matrix and Saves it in Mat.
narshu 0:349dc9b0984f 311 * If Row is out of the parameters it does nothing, but prints a warning.
narshu 0:349dc9b0984f 312 * @param Row: number of row to extract elements. this->_nRows.
narshu 0:349dc9b0984f 313 * @param Mat: Matrix to extract from.
narshu 0:349dc9b0984f 314 * @return New Row Matrix.
narshu 0:349dc9b0984f 315 */
narshu 0:349dc9b0984f 316 static const Matrix ExportRow( const Matrix& Mat, int row );
narshu 0:349dc9b0984f 317
narshu 0:349dc9b0984f 318
narshu 0:349dc9b0984f 319 /** @brief
narshu 0:349dc9b0984f 320 * This method extracts a Column from a Matrix and returns the Column
narshu 0:349dc9b0984f 321 * as a new Matrix.
narshu 0:349dc9b0984f 322 * If Row is out of the parameters, it does nothing and prints a warning.
narshu 0:349dc9b0984f 323 * @param Col: number of Column to extract elements. this->_nCols.
narshu 0:349dc9b0984f 324 * @param Mat: Matrix to extract from.
narshu 0:349dc9b0984f 325 * @return New Row Matrix.
narshu 0:349dc9b0984f 326 */
narshu 0:349dc9b0984f 327 static const Matrix ExportCol( const Matrix& Mat, int col );
narshu 0:349dc9b0984f 328
narshu 0:349dc9b0984f 329
narshu 0:349dc9b0984f 330 /** @brief
narshu 0:349dc9b0984f 331 * This function resizes the Matrix to fit new data or cropped it,
narshu 0:349dc9b0984f 332 * operator << can overwrite entire Matrix.
narshu 0:349dc9b0984f 333 *
narshu 0:349dc9b0984f 334 * @param Rows: New Number of Rows
narshu 0:349dc9b0984f 335 * @param Cols: New numbler of columns
narshu 0:349dc9b0984f 336 */
narshu 0:349dc9b0984f 337 void Resize( int Rows, int Cols );
narshu 0:349dc9b0984f 338
narshu 0:349dc9b0984f 339
narshu 0:349dc9b0984f 340 /** @brief
narshu 0:349dc9b0984f 341 * Asks user for numbers to fill the Matrix elements, one by one.
narshu 0:349dc9b0984f 342 * It uses printf(); by default the USBTX, USBRX, 9600, 1N8.
narshu 0:349dc9b0984f 343 */
narshu 0:349dc9b0984f 344 virtual void FillMatrix();
narshu 0:349dc9b0984f 345
narshu 0:349dc9b0984f 346
narshu 0:349dc9b0984f 347 /** @brief
narshu 0:349dc9b0984f 348 * Prints the entire Matrix using standard PRINTF
narshu 0:349dc9b0984f 349 */
narshu 0:349dc9b0984f 350 virtual void print() const;
narshu 0:349dc9b0984f 351
narshu 0:349dc9b0984f 352
narshu 0:349dc9b0984f 353 /** @brief
narshu 0:349dc9b0984f 354 * Makes all values on Matrix object zero.
narshu 0:349dc9b0984f 355 * Also make posible use the '<<' operator to add elements and keep
narshu 0:349dc9b0984f 356 * track of last element added.
narshu 0:349dc9b0984f 357 */
narshu 0:349dc9b0984f 358 void Clear();
narshu 0:349dc9b0984f 359
narshu 0:349dc9b0984f 360
narshu 0:349dc9b0984f 361 /** @brief
narshu 0:349dc9b0984f 362 * Assigns a float number to the matrix in a specified position
narshu 0:349dc9b0984f 363 * Index starts at [1][1].
narshu 0:349dc9b0984f 364 *
narshu 0:349dc9b0984f 365 * @param number: Number to be set
narshu 0:349dc9b0984f 366 * @param Row: Row of Matrix
narshu 0:349dc9b0984f 367 * @param Col: Column of Matrix
narshu 0:349dc9b0984f 368 */
narshu 0:349dc9b0984f 369 void add( int Row, int Col, float number );
narshu 0:349dc9b0984f 370
narshu 0:349dc9b0984f 371
narshu 0:349dc9b0984f 372 /** @brief
narshu 0:349dc9b0984f 373 * Returns the sum of every cell in the Matrix.
narshu 0:349dc9b0984f 374 */
narshu 0:349dc9b0984f 375 float sum() const;
narshu 0:349dc9b0984f 376
narshu 0:349dc9b0984f 377
narshu 0:349dc9b0984f 378 /** @brief
narshu 0:349dc9b0984f 379 * Return the number in position [Row],[Col]
narshu 0:349dc9b0984f 380 * @param Row = number of row in matrix
narshu 0:349dc9b0984f 381 * @param Col = number of Col in matrix
narshu 0:349dc9b0984f 382 * @return Num = float number in matrix
narshu 0:349dc9b0984f 383 */
narshu 0:349dc9b0984f 384 float getNumber( int Row, int Col ) const;
narshu 0:349dc9b0984f 385
narshu 0:349dc9b0984f 386
narshu 0:349dc9b0984f 387 /**@brief
narshu 0:349dc9b0984f 388 * Retuns the number of Columns in Matrix, index starts at 1.
narshu 0:349dc9b0984f 389 */
narshu 0:349dc9b0984f 390 int getCols() const;
narshu 0:349dc9b0984f 391
narshu 0:349dc9b0984f 392
narshu 0:349dc9b0984f 393 /**@brief
narshu 0:349dc9b0984f 394 *Retruns the number of Rows in Matrix, index starts at 1.
narshu 0:349dc9b0984f 395 */
narshu 0:349dc9b0984f 396 int getRows() const;
narshu 0:349dc9b0984f 397
narshu 0:349dc9b0984f 398
narshu 0:349dc9b0984f 399 private:
narshu 0:349dc9b0984f 400
narshu 0:349dc9b0984f 401 /** 2-D Vector Array*/
narshu 0:349dc9b0984f 402 std::vector < std::vector<float> > _matrix;
narshu 0:349dc9b0984f 403
narshu 0:349dc9b0984f 404
narshu 0:349dc9b0984f 405
narshu 0:349dc9b0984f 406 /** Number of Rows in Matrix*/
narshu 0:349dc9b0984f 407 int _nRows;
narshu 0:349dc9b0984f 408
narshu 0:349dc9b0984f 409 /**Number of Columns in Matrix*/
narshu 0:349dc9b0984f 410 int _nCols;
narshu 0:349dc9b0984f 411
narshu 0:349dc9b0984f 412
narshu 0:349dc9b0984f 413
narshu 0:349dc9b0984f 414 /**Last Element Row position in Matrix*/
narshu 0:349dc9b0984f 415 int _pRow;
narshu 0:349dc9b0984f 416
narshu 0:349dc9b0984f 417 /**Last Element Col position in Matrix*/
narshu 0:349dc9b0984f 418 int _pCol;
narshu 0:349dc9b0984f 419
narshu 0:349dc9b0984f 420 };
narshu 0:349dc9b0984f 421
narshu 0:349dc9b0984f 422 #endif /* MATRIX_H */
narshu 0:349dc9b0984f 423