00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef utilities_H
00018 #define utilities_H
00019
00020
00021 #include <boost/numeric/ublas/triangular.hpp>
00022 #include <boost/numeric/ublas/lu.hpp>
00023 #include <boost/numeric/ublas/io.hpp>
00024 #include <boost/numeric/ublas/vector.hpp>
00025 #include <boost/numeric/ublas/vector_proxy.hpp>
00026 #include <boost/numeric/ublas/matrix.hpp>
00027 #include <boost/numeric/ublas/matrix_proxy.hpp>
00028
00029
00030 #include <boost/numeric/bindings/traits/ublas_matrix.hpp>
00031 #include <boost/numeric/bindings/traits/ublas_vector.hpp>
00032 #include <boost/numeric/bindings/lapack/gesvd.hpp>
00033 #include <boost/numeric/bindings/lapack/gees.hpp>
00034 #include <boost/numeric/bindings/lapack/workspace.hpp>
00035
00036
00037 #include <string>
00038 #include <iostream>
00039 #include <sstream>
00040 #include <iomanip>
00041 #include <term.h>
00042 #include <unistd.h>
00043 #include <cmath>
00044 #include <limits>
00045 #include <stdio.h>
00046
00047 using namespace boost::numeric::ublas;
00048
00049 namespace uvsim
00050 {
00051
00052
00053 void lowPass(const double &freq, const vector<double> &freqCut,
00054 const vector<double> &x, vector<double> &y);
00055 void discretize(matrix<double>& Ac, matrix<double>& Bc, matrix<double>& Ad, matrix<double>& Bd, double T, int order);
00056
00057
00058 matrix<double> ones(int m, int n);
00059 matrix<double> skew(vector<double> &v);
00060 matrix<double> inv(const matrix<double>& input);
00061 matrix<double> pinv(matrix<double> A);
00062 bool select(double real, double imag);
00063 matrix<double> dare(matrix<double>A, matrix<double>B,matrix<double>R,matrix<double>Q);
00064 matrix<double> prod(matrix<double> A, matrix<double> B, matrix<double> C);
00065 double max(vector<double> v);
00066
00067
00068 vector<double> dotProd(vector<double> v1, vector<double> v2);
00069 vector<double> quatProd(vector<double> q1, vector<double> q2);
00070 vector<double> quatRotate(vector<double> q, vector<double> vec);
00071 vector<double> crossProd(vector<double> v1, vector<double> v2);
00072 vector<double> quatConj(vector<double> q);
00073 vector<double> quat2Euler(vector<double> q);
00074 vector<double> euler2Quat(vector<double> euler);
00075 vector<double> axisAngle2Quat(vector<double> axis, double angle);
00076 vector<double> norm(vector<double> vec);
00077
00078
00079 bool fileExists(const char * filename);
00080 std::string doubleToString(double val);
00081 std::string intToString(int val);
00082 void cursorxy( int col, int line );
00083 void clear( bool gohome = true );
00084 double elapsedTime(timeval time0, timeval time);
00085
00086
00087 vector<double> integrate(vector<double> i1,
00088 vector<double> i0, vector<double> initial, double freq);
00089 double integrate(double i1, double i0, double initial, double freq);
00090
00091 }
00092
00093
00094 #endif
00095
00096