IT++ Logo Newcom Logo

specmat.h

Go to the documentation of this file.
00001 
00033 #ifndef SPECMAT_H
00034 #define SPECMAT_H
00035 
00036 #include <itpp/base/vec.h>
00037 #include <itpp/base/mat.h>
00038 
00039 
00040 namespace itpp {
00041 
00046   ivec find(const bvec &invector);
00047 
00052 
00053 
00054 
00056   vec ones(int size);
00058   bvec ones_b(int size);
00060   ivec ones_i(int size);
00062   cvec ones_c(int size);
00063 
00065   mat ones(int rows, int cols);
00067   bmat ones_b(int rows, int cols);
00069   imat ones_i(int rows, int cols);
00071   cmat ones_c(int rows, int cols);
00072 
00074   vec zeros(int size);
00076   bvec zeros_b(int size);
00078   ivec zeros_i(int size);
00080   cvec zeros_c(int size);
00081 
00083   mat zeros(int rows, int cols);
00085   bmat zeros_b(int rows, int cols);
00087   imat zeros_i(int rows, int cols);
00089   cmat zeros_c(int rows, int cols);
00090 
00092   mat eye(int size);
00094   bmat eye_b(int size);
00096   imat eye_i(int size);
00098   cmat eye_c(int size);
00100   template <class T>
00101     void eye(int size, Mat<T> &m);
00102 
00104   vec impulse(int size);
00106   vec linspace(double from, double to, int length = 100);
00107 
00114   imat hadamard(int size);
00115 
00132   imat jacobsthal(int p);
00133 
00147   imat conference(int n);
00148 
00170   cmat toeplitz(const cvec &c, const cvec &r);
00172   cmat toeplitz(const cvec &c);
00174   mat toeplitz(const vec &c, const vec &r);
00176   mat toeplitz(const vec &c);
00177 
00179 
00180 
00185   mat rotation_matrix(int dim, int plane1, int plane2, double angle);
00186 
00191   void house(const vec &x, vec &v, double &beta);
00192 
00197   void givens(double a, double b, double &c, double &s);
00198 
00203   void givens(double a, double b, mat &m);
00204 
00209   mat givens(double a, double b);
00210 
00215   void givens_t(double a, double b, mat &m);
00216 
00221   mat givens_t(double a, double b);
00222 
00227   template <class T>
00228     Vec<T> vec_1(T v0)
00229     {
00230       Vec<T> v(1);
00231       v(0) = v0;
00232       return v;
00233     }
00234 
00239   template <class T>
00240     Vec<T> vec_2(T v0, T v1)
00241     {
00242       Vec<T> v(2);
00243       v(0) = v0;
00244       v(1) = v1;
00245       return v;
00246     }
00247 
00252   template <class T>
00253     Vec<T> vec_3(T v0, T v1, T v2)
00254     {
00255       Vec<T> v(3);
00256       v(0) = v0;
00257       v(1) = v1;
00258       v(2) = v2;
00259       return v;
00260     }
00261 
00266   template <class T>
00267     Mat<T> mat_1x1(T m00)
00268     {
00269       Mat<T> m(1,1);
00270       m(0,0) = m00;
00271       return m;
00272     }
00273 
00278   template <class T>
00279     Mat<T> mat_1x2(T m00, T m01)
00280     {
00281       Mat<T> m(1,2);
00282       m(0,0) = m00; m(0,1) = m01;
00283       return m;
00284     }
00285 
00290   template <class T>
00291     Mat<T> mat_2x1(T m00,
00292                    T m10)
00293     {
00294       Mat<T> m(2,1);
00295       m(0,0) = m00;
00296       m(1,0) = m10;
00297       return m;
00298     }
00299 
00304   template <class T>
00305     Mat<T> mat_2x2(T m00, T m01,
00306                    T m10, T m11)
00307     {
00308       Mat<T> m(2,2);
00309       m(0,0) = m00; m(0,1) = m01;
00310       m(1,0) = m10; m(1,1) = m11;
00311       return m;
00312     }
00313 
00318   template <class T>
00319     Mat<T> mat_1x3(T m00, T m01, T m02)
00320     {
00321       Mat<T> m(1,3);
00322       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00323       return m;
00324     }
00325 
00330   template <class T>
00331     Mat<T> mat_3x1(T m00,
00332                    T m10,
00333                    T m20)
00334     {
00335       Mat<T> m(3,1);
00336       m(0,0) = m00;
00337       m(1,0) = m10;
00338       m(2,0) = m20;
00339       return m;
00340     }
00341 
00346   template <class T>
00347     Mat<T> mat_2x3(T m00, T m01, T m02,
00348                    T m10, T m11, T m12)
00349     {
00350       Mat<T> m(2,3);
00351       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00352       m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00353       return m;
00354     }
00355 
00360   template <class T>
00361     Mat<T> mat_3x2(T m00, T m01,
00362                    T m10, T m11,
00363                    T m20, T m21)
00364     {
00365       Mat<T> m(3,2);
00366       m(0,0) = m00; m(0,1) = m01;
00367       m(1,0) = m10; m(1,1) = m11;
00368       m(2,0) = m20; m(2,1) = m21;
00369       return m;
00370     }
00371 
00376   template <class T>
00377     Mat<T> mat_3x3(T m00, T m01, T m02,
00378                    T m10, T m11, T m12,
00379                    T m20, T m21, T m22)
00380     {
00381       Mat<T> m(3,3);
00382       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00383       m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00384       m(2,0) = m20; m(2,1) = m21; m(2,2) = m22;
00385       return m;
00386     }
00387 
00388 } //namespace itpp
00389 
00390 #endif // #ifndef SPECMAT_H
SourceForge Logo

Generated on Fri Jan 11 08:51:37 2008 for IT++ by Doxygen 1.3.9.1