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
Generated on Sat Aug 25 23:37:27 2007 for IT++ by Doxygen 1.5.2