Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

specmat.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*
00002  *                                   IT++                                    *
00003  *---------------------------------------------------------------------------*
00004  * Copyright (c) 1995-2001 by Tony Ottosson, Thomas Eriksson, Pål Frenger,   *
00005  * Tobias Ringström, and Jonas Samuelsson.                                   *
00006  *                                                                           *
00007  * Permission to use, copy, modify, and distribute this software and its     *
00008  * documentation under the terms of the GNU General Public License is hereby *
00009  * granted. No representations are made about the suitability of this        *
00010  * software for any purpose. It is provided "as is" without expressed or     *
00011  * implied warranty. See the GNU General Public License for more details.    *
00012  *---------------------------------------------------------------------------*/
00016 //  SPUC - Signal processing using C++ - A DSP library
00017 
00028 #ifndef __specmat_h
00029 #define __specmat_h
00030 
00031 #include "vector.h"
00032 #include "matrix.h"
00033 //#include "converters.h"
00034 //#include "scalfunc.h"
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 } // namespace SPUC 
00360 
00361 #endif // __specmat_h

Generated on Fri Sep 16 11:02:29 2005 for spuc by  doxygen 1.4.4