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 { 00039 00044 ivec find(const bvec &invector); 00045 00050 00051 00052 00054 vec ones(int size); 00056 bvec ones_b(int size); 00058 ivec ones_i(int size); 00060 cvec ones_c(int size); 00061 00063 mat ones(int rows, int cols); 00065 bmat ones_b(int rows, int cols); 00067 imat ones_i(int rows, int cols); 00069 cmat ones_c(int rows, int cols); 00070 00072 vec zeros(int size); 00074 bvec zeros_b(int size); 00076 ivec zeros_i(int size); 00078 cvec zeros_c(int size); 00079 00081 mat zeros(int rows, int cols); 00083 bmat zeros_b(int rows, int cols); 00085 imat zeros_i(int rows, int cols); 00087 cmat zeros_c(int rows, int cols); 00088 00090 mat eye(int size); 00092 bmat eye_b(int size); 00094 imat eye_i(int size); 00096 cmat eye_c(int size); 00098 template <class T> 00099 void eye(int size, Mat<T> &m); 00100 00102 vec impulse(int size); 00104 vec linspace(double from, double to, int length = 100); 00133 vec zigzag_space(double t0, double t1, int K = 5); 00134 00141 imat hadamard(int size); 00142 00159 imat jacobsthal(int p); 00160 00174 imat conference(int n); 00175 00197 cmat toeplitz(const cvec &c, const cvec &r); 00199 cmat toeplitz(const cvec &c); 00201 mat toeplitz(const vec &c, const vec &r); 00203 mat toeplitz(const vec &c); 00204 00206 00207 00212 mat rotation_matrix(int dim, int plane1, int plane2, double angle); 00213 00218 void house(const vec &x, vec &v, double &beta); 00219 00224 void givens(double a, double b, double &c, double &s); 00225 00230 void givens(double a, double b, mat &m); 00231 00236 mat givens(double a, double b); 00237 00242 void givens_t(double a, double b, mat &m); 00243 00248 mat givens_t(double a, double b); 00249 00254 template <class T> 00255 Vec<T> vec_1(T v0) 00256 { 00257 Vec<T> v(1); 00258 v(0) = v0; 00259 return v; 00260 } 00261 00266 template <class T> 00267 Vec<T> vec_2(T v0, T v1) 00268 { 00269 Vec<T> v(2); 00270 v(0) = v0; 00271 v(1) = v1; 00272 return v; 00273 } 00274 00279 template <class T> 00280 Vec<T> vec_3(T v0, T v1, T v2) 00281 { 00282 Vec<T> v(3); 00283 v(0) = v0; 00284 v(1) = v1; 00285 v(2) = v2; 00286 return v; 00287 } 00288 00293 template <class T> 00294 Mat<T> mat_1x1(T m00) 00295 { 00296 Mat<T> m(1, 1); 00297 m(0, 0) = m00; 00298 return m; 00299 } 00300 00305 template <class T> 00306 Mat<T> mat_1x2(T m00, T m01) 00307 { 00308 Mat<T> m(1, 2); 00309 m(0, 0) = m00; 00310 m(0, 1) = m01; 00311 return m; 00312 } 00313 00318 template <class T> 00319 Mat<T> mat_2x1(T m00, 00320 T m10) 00321 { 00322 Mat<T> m(2, 1); 00323 m(0, 0) = m00; 00324 m(1, 0) = m10; 00325 return m; 00326 } 00327 00332 template <class T> 00333 Mat<T> mat_2x2(T m00, T m01, 00334 T m10, T m11) 00335 { 00336 Mat<T> m(2, 2); 00337 m(0, 0) = m00; 00338 m(0, 1) = m01; 00339 m(1, 0) = m10; 00340 m(1, 1) = m11; 00341 return m; 00342 } 00343 00348 template <class T> 00349 Mat<T> mat_1x3(T m00, T m01, T m02) 00350 { 00351 Mat<T> m(1, 3); 00352 m(0, 0) = m00; 00353 m(0, 1) = m01; 00354 m(0, 2) = m02; 00355 return m; 00356 } 00357 00362 template <class T> 00363 Mat<T> mat_3x1(T m00, 00364 T m10, 00365 T m20) 00366 { 00367 Mat<T> m(3, 1); 00368 m(0, 0) = m00; 00369 m(1, 0) = m10; 00370 m(2, 0) = m20; 00371 return m; 00372 } 00373 00378 template <class T> 00379 Mat<T> mat_2x3(T m00, T m01, T m02, 00380 T m10, T m11, T m12) 00381 { 00382 Mat<T> m(2, 3); 00383 m(0, 0) = m00; 00384 m(0, 1) = m01; 00385 m(0, 2) = m02; 00386 m(1, 0) = m10; 00387 m(1, 1) = m11; 00388 m(1, 2) = m12; 00389 return m; 00390 } 00391 00396 template <class T> 00397 Mat<T> mat_3x2(T m00, T m01, 00398 T m10, T m11, 00399 T m20, T m21) 00400 { 00401 Mat<T> m(3, 2); 00402 m(0, 0) = m00; 00403 m(0, 1) = m01; 00404 m(1, 0) = m10; 00405 m(1, 1) = m11; 00406 m(2, 0) = m20; 00407 m(2, 1) = m21; 00408 return m; 00409 } 00410 00415 template <class T> 00416 Mat<T> mat_3x3(T m00, T m01, T m02, 00417 T m10, T m11, T m12, 00418 T m20, T m21, T m22) 00419 { 00420 Mat<T> m(3, 3); 00421 m(0, 0) = m00; 00422 m(0, 1) = m01; 00423 m(0, 2) = m02; 00424 m(1, 0) = m10; 00425 m(1, 1) = m11; 00426 m(1, 2) = m12; 00427 m(2, 0) = m20; 00428 m(2, 1) = m21; 00429 m(2, 2) = m22; 00430 return m; 00431 } 00432 00433 } //namespace itpp 00434 00435 #endif // #ifndef SPECMAT_H
Generated on Fri Jul 25 12:42:58 2008 for IT++ by Doxygen 1.5.4