IT++ Logo

specmat.h

Go to the documentation of this file.
00001 
00030 #ifndef SPECMAT_H
00031 #define SPECMAT_H
00032 
00033 #include <itpp/base/vec.h>
00034 #include <itpp/base/mat.h>
00035 
00036 
00037 namespace itpp {
00038 
00043   ivec find(const bvec &invector);
00044 
00049 
00050 
00051 
00053   vec ones(int size);
00055   bvec ones_b(int size);
00057   ivec ones_i(int size);
00059   cvec ones_c(int size);
00060 
00062   mat ones(int rows, int cols);
00064   bmat ones_b(int rows, int cols);
00066   imat ones_i(int rows, int cols);
00068   cmat ones_c(int rows, int cols);
00069 
00071   vec zeros(int size);
00073   bvec zeros_b(int size);
00075   ivec zeros_i(int size);
00077   cvec zeros_c(int size);
00078 
00080   mat zeros(int rows, int cols);
00082   bmat zeros_b(int rows, int cols);
00084   imat zeros_i(int rows, int cols);
00086   cmat zeros_c(int rows, int cols);
00087 
00089   mat eye(int size);
00091   bmat eye_b(int size);
00093   imat eye_i(int size);
00095   cmat eye_c(int size);
00097   template <class T>
00098     void eye(int size, Mat<T> &m);
00099 
00101   vec impulse(int size);
00103   vec linspace(double from, double to, int length = 100);
00132   vec zigzag_space(double t0, double t1, int K=5);
00133 
00140   imat hadamard(int size);
00141 
00158   imat jacobsthal(int p);
00159 
00173   imat conference(int n);
00174 
00196   cmat toeplitz(const cvec &c, const cvec &r);
00198   cmat toeplitz(const cvec &c);
00200   mat toeplitz(const vec &c, const vec &r);
00202   mat toeplitz(const vec &c);
00203 
00205 
00206 
00211   mat rotation_matrix(int dim, int plane1, int plane2, double angle);
00212 
00217   void house(const vec &x, vec &v, double &beta);
00218 
00223   void givens(double a, double b, double &c, double &s);
00224 
00229   void givens(double a, double b, mat &m);
00230 
00235   mat givens(double a, double b);
00236 
00241   void givens_t(double a, double b, mat &m);
00242 
00247   mat givens_t(double a, double b);
00248 
00253   template <class T>
00254     Vec<T> vec_1(T v0)
00255     {
00256       Vec<T> v(1);
00257       v(0) = v0;
00258       return v;
00259     }
00260 
00265   template <class T>
00266     Vec<T> vec_2(T v0, T v1)
00267     {
00268       Vec<T> v(2);
00269       v(0) = v0;
00270       v(1) = v1;
00271       return v;
00272     }
00273 
00278   template <class T>
00279     Vec<T> vec_3(T v0, T v1, T v2)
00280     {
00281       Vec<T> v(3);
00282       v(0) = v0;
00283       v(1) = v1;
00284       v(2) = v2;
00285       return v;
00286     }
00287 
00292   template <class T>
00293     Mat<T> mat_1x1(T m00)
00294     {
00295       Mat<T> m(1,1);
00296       m(0,0) = m00;
00297       return m;
00298     }
00299 
00304   template <class T>
00305     Mat<T> mat_1x2(T m00, T m01)
00306     {
00307       Mat<T> m(1,2);
00308       m(0,0) = m00; m(0,1) = m01;
00309       return m;
00310     }
00311 
00316   template <class T>
00317     Mat<T> mat_2x1(T m00,
00318        T m10)
00319     {
00320       Mat<T> m(2,1);
00321       m(0,0) = m00;
00322       m(1,0) = m10;
00323       return m;
00324     }
00325 
00330   template <class T>
00331     Mat<T> mat_2x2(T m00, T m01,
00332        T m10, T m11)
00333     {
00334       Mat<T> m(2,2);
00335       m(0,0) = m00; m(0,1) = m01;
00336       m(1,0) = m10; m(1,1) = m11;
00337       return m;
00338     }
00339 
00344   template <class T>
00345     Mat<T> mat_1x3(T m00, T m01, T m02)
00346     {
00347       Mat<T> m(1,3);
00348       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00349       return m;
00350     }
00351 
00356   template <class T>
00357     Mat<T> mat_3x1(T m00,
00358        T m10,
00359        T m20)
00360     {
00361       Mat<T> m(3,1);
00362       m(0,0) = m00;
00363       m(1,0) = m10;
00364       m(2,0) = m20;
00365       return m;
00366     }
00367 
00372   template <class T>
00373     Mat<T> mat_2x3(T m00, T m01, T m02,
00374        T m10, T m11, T m12)
00375     {
00376       Mat<T> m(2,3);
00377       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00378       m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00379       return m;
00380     }
00381 
00386   template <class T>
00387     Mat<T> mat_3x2(T m00, T m01,
00388        T m10, T m11,
00389        T m20, T m21)
00390     {
00391       Mat<T> m(3,2);
00392       m(0,0) = m00; m(0,1) = m01;
00393       m(1,0) = m10; m(1,1) = m11;
00394       m(2,0) = m20; m(2,1) = m21;
00395       return m;
00396     }
00397 
00402   template <class T>
00403     Mat<T> mat_3x3(T m00, T m01, T m02,
00404        T m10, T m11, T m12,
00405        T m20, T m21, T m22)
00406     {
00407       Mat<T> m(3,3);
00408       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00409       m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00410       m(2,0) = m20; m(2,1) = m21; m(2,2) = m22;
00411       return m;
00412     }
00413 
00414 } //namespace itpp
00415 
00416 #endif // #ifndef SPECMAT_H
SourceForge Logo

Generated on Sun Dec 9 17:30:25 2007 for IT++ by Doxygen 1.5.4