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
Generated on Fri Jun 8 01:07:10 2007 for IT++ by Doxygen 1.5.2