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
Generated on Sun Sep 14 18:57:03 2008 for IT++ by Doxygen 1.5.6