This is a test Program for the Class Matrix version 1.6.4
Dependencies: Matrix Kinematics mbed TrackVector2D MatrixMath
main.cpp
- Committer:
- Yo_Robot
- Date:
- 2011-10-22
- Revision:
- 1:9e4cb305fb24
- Parent:
- 0:63af78c5943c
- Child:
- 2:e3b963c560d8
File content as of revision 1:9e4cb305fb24:
#include "mbed.h" #include "Matrix.h" #include "MatrixMath.h" int main() { DigitalOut myled(LED1); Timer t; t.start(); //--- Matrix myMatrix(3,3); Matrix anotherMatrix; // Fill Matrix with data. myMatrix << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9; printf( "\nmyMatrix \n"); myMatrix.print(); printf( "\n" ); /** Matrix operations **/ // Add 5 to negative Matrix anotherMatrix = - myMatrix + 5; printf( "Result Matrix: anotherMatrix = - myMatrix + 5\n" ); anotherMatrix.print(); printf( "\n" ); // Matrix Multiplication * anotherMatrix *= myMatrix; printf( "anotherMatrix = anotherMatrix * myMatrix\n" ); anotherMatrix.print(); printf( "\n" ); // Scalar Matrix Multiplication anotherMatrix *= 0.5 anotherMatrix *= 0.5; printf( "Result Matrix *= 0.5:\n" ); anotherMatrix.print(); printf( " _______________________________ \n" ); printf("** MEMBER OPERATIONS ** \n\n"); //Copy myMatrix Matrix temp( myMatrix ); // Resize Matrix temp.Resize(4,4); printf("\nAdded one Column, one Row to the limitsof myMatrix saved in temp Matrix\n"); temp.print(); //Delete those new elements, we don't need them anyway. Matrix::DeleteRow( temp, 4 ); Matrix::DeleteCol( temp, 4 ); printf("\nBack to normal\n"); temp.print(); // Make room at the begining of Matrix Matrix::AddRow( temp, 1 ); Matrix::AddCol( temp, 1 ); printf("\nAdded Just one Row and column to the beginning\n"); temp.print(); // Take the second Row as a New Matrix anotherMatrix = Matrix::ExportRow( temp, 2 ); printf("\nExport Second Row \n"); anotherMatrix.print(); // The second Column as a ner Matrix, then transpose it to make it a Row anotherMatrix = Matrix::ExportCol( temp, 2 ); anotherMatrix = MatrixMath::Transpose( anotherMatrix ); printf("\nAnd Export Second Column and Transpose it \n"); anotherMatrix.print(); // This will Check to see if your are reduce to a single Row or Column temp = Matrix::ToPackedVector( myMatrix ); printf("\nInitial Matrix turned into a single Row\n"); temp.print(); /** Mtrix Math **/ printf("\n Matrix Inverse and Determinant\n"); Matrix BigMat( 5, 5 ); BigMat << 1 << 0 << 1 << 1 << 3 << 2 << 3 << 4 << 0 << 4 << 1 << 6 << 1 << 1 << 2 << 1 << 0 << 2 << 1 << 1 << 2 << 3 << 4 << 2 << 0; printf( "\nBigMat:\n"); BigMat.print(); printf( "\n" ); float determ = MatrixMath::det( BigMat ); printf( "\nBigMat's Determinant is: %f \n", determ); printf( "\n" ); Matrix myInv = MatrixMath::Inv( BigMat ); printf( "\nBigMat's Inverse is:\n"); myInv.print(); printf( "\n" ); //--- t.stop(); printf( "\nThe time for all those operations in mbed was : %f seconds\n", t.read() ); printf( "\nMost of it is due to printf though in my core i5 takes 100ms with printf() \n" ); printf( "\nOnly operations witout any print takes: 0.025 seconds :) \n" ); while(1) { myled = 1; wait(0.2); myled = 0; wait(0.2); } }