00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00016
00017
00028 #ifndef __specmat_h
00029 #define __specmat_h
00030
00031 #include "vector.h"
00032 #include "matrix.h"
00033
00034
00035 namespace SPUC {
00040 ivec find(const bvec &invector);
00041
00044
00045
00046
00048 vec ones(int size);
00050 bvec ones_b(int size);
00052 ivec ones_i(int size);
00054 cvec ones_c(int size);
00055
00057 mat ones(int rows, int cols);
00059 bmat ones_b(int rows, int cols);
00061 imat ones_i(int rows, int cols);
00063 cmat ones_c(int rows, int cols);
00064
00066 vec zeros(int size);
00068 bvec zeros_b(int size);
00070 ivec zeros_i(int size);
00072 cvec zeros_c(int size);
00073
00075 mat zeros(int rows, int cols);
00077 bmat zeros_b(int rows, int cols);
00079 imat zeros_i(int rows, int cols);
00081 cmat zeros_c(int rows, int cols);
00082
00084 mat eye(int size);
00086 bmat eye_b(int size);
00088 imat eye_i(int size);
00090 cmat eye_c(int size);
00092 template <class T>
00093 void eye(int size, Mat<T> &m);
00094
00096 vec impulse(int size);
00098 vec linspace(double from, double to, int length = 100);
00100 imat hadamard(int size);
00101
00118 imat jacobsthal(int p);
00119
00133 imat conference(int n);
00134
00136
00139
00140
00141
00143 vec hamming(int size);
00145 vec hanning(int size);
00147 vec triang(int size);
00149 vec sqrt_win(int size);
00151
00152
00157 mat rotation_matrix(int dim, int plane1, int plane2, double angle);
00158
00163 void house(const vec &x, vec &v, double &beta);
00164
00169 void givens(double a, double b, double &c, double &s);
00170
00175 void givens(double a, double b, mat &m);
00176
00181 mat givens(double a, double b);
00182
00187 void givens_t(double a, double b, mat &m);
00188
00193 mat givens_t(double a, double b);
00194
00199 template <class T>
00200 Vec<T> vec_1(T v0)
00201 {
00202 Vec<T> v(1);
00203 v(0) = v0;
00204 return v;
00205 }
00206
00211 template <class T>
00212 Vec<T> vec_2(T v0, T v1)
00213 {
00214 Vec<T> v(2);
00215 v(0) = v0;
00216 v(1) = v1;
00217 return v;
00218 }
00219
00224 template <class T>
00225 Vec<T> vec_3(T v0, T v1, T v2)
00226 {
00227 Vec<T> v(3);
00228 v(0) = v0;
00229 v(1) = v1;
00230 v(2) = v2;
00231 return v;
00232 }
00233
00238 template <class T>
00239 Mat<T> mat_1x1(T m00)
00240 {
00241 Mat<T> m(1,1);
00242 m(0,0) = m00;
00243 return m;
00244 }
00245
00250 template <class T>
00251 Mat<T> mat_1x2(T m00, T m01)
00252 {
00253 Mat<T> m(1,2);
00254 m(0,0) = m00; m(0,1) = m01;
00255 return m;
00256 }
00257
00262 template <class T>
00263 Mat<T> mat_2x1(T m00,
00264 T m10)
00265 {
00266 Mat<T> m(2,1);
00267 m(0,0) = m00;
00268 m(1,0) = m10;
00269 return m;
00270 }
00271
00276 template <class T>
00277 Mat<T> mat_2x2(T m00, T m01,
00278 T m10, T m11)
00279 {
00280 Mat<T> m(2,2);
00281 m(0,0) = m00; m(0,1) = m01;
00282 m(1,0) = m10; m(1,1) = m11;
00283 return m;
00284 }
00285
00290 template <class T>
00291 Mat<T> mat_1x3(T m00, T m01, T m02)
00292 {
00293 Mat<T> m(1,3);
00294 m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00295 return m;
00296 }
00297
00302 template <class T>
00303 Mat<T> mat_3x1(T m00,
00304 T m10,
00305 T m20)
00306 {
00307 Mat<T> m(3,1);
00308 m(0,0) = m00;
00309 m(1,0) = m10;
00310 m(2,0) = m20;
00311 return m;
00312 }
00313
00318 template <class T>
00319 Mat<T> mat_2x3(T m00, T m01, T m02,
00320 T m10, T m11, T m12)
00321 {
00322 Mat<T> m(2,3);
00323 m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00324 m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00325 return m;
00326 }
00327
00332 template <class T>
00333 Mat<T> mat_3x2(T m00, T m01,
00334 T m10, T m11,
00335 T m20, T m21)
00336 {
00337 Mat<T> m(3,2);
00338 m(0,0) = m00; m(0,1) = m01;
00339 m(1,0) = m10; m(1,1) = m11;
00340 m(2,0) = m20; m(2,1) = m21;
00341 return m;
00342 }
00343
00348 template <class T>
00349 Mat<T> mat_3x3(T m00, T m01, T m02,
00350 T m10, T m11, T m12,
00351 T m20, T m21, T m22)
00352 {
00353 Mat<T> m(3,3);
00354 m(0,0) = m00; m(0,1) = m01; m(0,2) = m02;
00355 m(1,0) = m10; m(1,1) = m11; m(1,2) = m12;
00356 m(2,0) = m20; m(2,1) = m21; m(2,2) = m22;
00357 return m;
00358 }
00359 }
00360
00361 #endif // __specmat_h