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);
00108   imat hadamard(int size);
00109 
00126   imat jacobsthal(int p);
00127 
00141   imat conference(int n);
00142 
00164   cmat toeplitz(const cvec &c, const cvec &r);
00166   cmat toeplitz(const cvec &c);
00168   mat toeplitz(const vec &c, const vec &r);
00170   mat toeplitz(const vec &c);
00171 
00173 
00174 
00179   mat rotation_matrix(int dim, int plane1, int plane2, double angle);
00180 
00185   void house(const vec &x, vec &v, double &beta);
00186 
00191   void givens(double a, double b, double &c, double &s);
00192 
00197   void givens(double a, double b, mat &m);
00198 
00203   mat givens(double a, double b);
00204 
00209   void givens_t(double a, double b, mat &m);
00210 
00215   mat givens_t(double a, double b);
00216 
00221   template <class T>
00222     Vec<T> vec_1(T v0)
00223     {
00224       Vec<T> v(1);
00225       v(0) = v0;
00226       return v;
00227     }
00228 
00233   template <class T>
00234     Vec<T> vec_2(T v0, T v1)
00235     {
00236       Vec<T> v(2);
00237       v(0) = v0;
00238       v(1) = v1;
00239       return v;
00240     }
00241 
00246   template <class T>
00247     Vec<T> vec_3(T v0, T v1, T v2)
00248     {
00249       Vec<T> v(3);
00250       v(0) = v0;
00251       v(1) = v1;
00252       v(2) = v2;
00253       return v;
00254     }
00255 
00260   template <class T>
00261     Mat<T> mat_1x1(T m00)
00262     {
00263       Mat<T> m(1,1);
00264       m(0,0) = m00;
00265       return m;
00266     }
00267 
00272   template <class T>
00273     Mat<T> mat_1x2(T m00, T m01)
00274     {
00275       Mat<T> m(1,2);
00276       m(0,0) = m00; m(0,1) = m01;
00277       return m;
00278     }
00279 
00284   template <class T>
00285     Mat<T> mat_2x1(T m00,
00286                    T m10)
00287     {
00288       Mat<T> m(2,1);
00289       m(0,0) = m00;
00290       m(1,0) = m10;
00291       return m;
00292     }
00293 
00298   template <class T>
00299     Mat<T> mat_2x2(T m00, T m01,
00300                    T m10, T m11)
00301     {
00302       Mat<T> m(2,2);
00303       m(0,0) = m00; m(0,1) = m01;
00304       m(1,0) = m10; m(1,1) = m11;
00305       return m;
00306     }
00307 
00312   template <class T>
00313     Mat<T> mat_1x3(T m00, T m01, T m02)
00314     {
00315       Mat<T> m(1,3);
00316       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00317       return m;
00318     }
00319 
00324   template <class T>
00325     Mat<T> mat_3x1(T m00,
00326                    T m10,
00327                    T m20)
00328     {
00329       Mat<T> m(3,1);
00330       m(0,0) = m00;
00331       m(1,0) = m10;
00332       m(2,0) = m20;
00333       return m;
00334     }
00335 
00340   template <class T>
00341     Mat<T> mat_2x3(T m00, T m01, T m02,
00342                    T m10, T m11, T m12)
00343     {
00344       Mat<T> m(2,3);
00345       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00346       m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00347       return m;
00348     }
00349 
00354   template <class T>
00355     Mat<T> mat_3x2(T m00, T m01,
00356                    T m10, T m11,
00357                    T m20, T m21)
00358     {
00359       Mat<T> m(3,2);
00360       m(0,0) = m00; m(0,1) = m01;
00361       m(1,0) = m10; m(1,1) = m11;
00362       m(2,0) = m20; m(2,1) = m21;
00363       return m;
00364     }
00365 
00370   template <class T>
00371     Mat<T> mat_3x3(T m00, T m01, T m02,
00372                    T m10, T m11, T m12,
00373                    T m20, T m21, T m22)
00374     {
00375       Mat<T> m(3,3);
00376       m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00377       m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00378       m(2,0) = m20; m(2,1) = m21; m(2,2) = m22;
00379       return m;
00380     }
00381 
00382 } //namespace itpp
00383 
00384 #endif // #ifndef SPECMAT_H
SourceForge Logo

Generated on Thu Apr 19 14:18:29 2007 for IT++ by Doxygen 1.5.1