GCpp general purpose C++ library  version 1.0
GRealSampleFFT.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GRealSampleFFT.hh
3  *
4  * Include file for class GRealSampleFFT.
5  */
6 //======================================================================
7 
8 #ifndef G_REAL_SAMPLE_FFT_HH
9 #define G_REAL_SAMPLE_FFT_HH
10 //======================================================================
11 
12 #include "GBaseSampleFFT.hh"
13 
14 //----------------------------------------------------------------------
15 /*! \class GRealSampleFFT
16  *
17  * This is a class to manage of a \b real function samples and the
18  * corresponding Fourier transform.
19  */
21 {
22  //------------------------------------------------------------
23  /*! \object_doc */
25  //------------------------------------------------------------
26 
27  protected:
28 
29  public:
30  //----------------------------------------------------------
31  /** @name Constructors, destructor, affectation */
32  //@{
33  // Constructors
34  GRealSampleFFT ( u_int n = 0, double dt = 1.L );
35  GRealSampleFFT ( const GRealSampleFFT & original );
36 
37  // Constructors setting function samples
38  GRealSampleFFT ( u_int n, const double data [] );
39  GRealSampleFFT ( u_int n, double t_lo, double t_hi,
40  const double data [], const bool ctr = false );
41  GRealSampleFFT ( u_int n, double t_lo, double t_hi,
42  double (*fct_ptr) ( const double, const double [] ),
43  const double fct_par[], const bool ctr = false );
44  GRealSampleFFT ( u_int n, double t_lo, double t_hi,
45  double (*fct_ptr) ( const double [], const double [] ),
46  const double fct_par[], const bool ctr = false );
47 
48  // Constructors setting Fourier transform
49  GRealSampleFFT ( const u_int n, const double data_re[],
50  const double data_im[] );
51 
52  // Affectation
53  GRealSampleFFT & operator = ( const GRealSampleFFT & original );
54 
55  // Destructors
56  virtual ~GRealSampleFFT ( );
57 
58  //@}
59 
60  //----------------------------------------------------------
61  /** @name Functions to initialise and set data for function sample or FT */
62  //@{
63  virtual void InitFunctionData ( u_int n, const double data [] ); // inline
64  virtual void InitFunctionData ( u_int n, double dt, const double data [] );
65 
66  virtual void InitFunctionData ( u_int n,
67  double t_lo, double t_hi,
68  double (*fct_ptr) ( double, const double [] ),
69  const double fct_par[], bool ctr = false );
70  virtual void InitFunctionData ( u_int n,
71  double t_lo, double t_hi,
72  double (*fct_ptr) ( const double [], const double [] ),
73  const double fct_par[], bool ctr = false );
74 
75  virtual void InitTransformData ( u_int n, const double data [] );
76  virtual void InitTransformData ( u_int n, const double data_re[],
77  const double data_im[] );
78 
79 
80  // Functions to set values
81  virtual void SetFunctionData ( double (*fct_ptr) ( double, const double [] ),
82  const double fct_par[]);
83  virtual void SetFunctionData ( double (*fct_ptr) ( const double [], const double [] ),
84  const double fct_par[]);
85 
86  virtual void SetFullBandFilter ( double amp = 1.L );
87 
88 
89  virtual void SetFunctionValue ( u_int i, double val );
90 
91  virtual void SetTransformValue ( u_int i, double re, double im = 0.L );
92  virtual void SetFFTValue ( u_int i, double re, double im = 0.L );
93 
94 
95  // Functions to set partial sample values
96  virtual int SetFunctionValues ( u_int i1, u_int i2,
97  double val );
98  virtual int SetFunctionValues ( u_int i1, u_int i2,
99  const double data[] );
100  virtual int SetFunctionValues ( u_int i1, u_int i2,
101  double (*fct_ptr) ( double, const double [] ),
102  const double fct_par[] );
103  virtual int SetFunctionValues ( const u_int i1, const u_int i2,
104  double (*fct_ptr) ( const double [], const double [] ),
105  const double fct_par[] );
106 
107 
108  // Computation of the Fourier and inverse transforms
109  virtual int ComputeTransformData ( );
110  virtual int ComputeFunctionData ( );
111 
112  virtual void Normalise ( double s = 1.L );
113 
114  //@}
115 
116  //----------------------------------------------------------
117  /** @name Function to extract samples information */
118  //@{
119 
120  virtual double GetSum ( );
121  virtual double GetMean ( ); // inline
122  virtual double GetRMS ( );
123  virtual double GetIntegral ( );
124  virtual double GetPower ( bool f = false );
125  virtual double GetMinimum ( );
126  virtual double GetMinimum ( double & t );
127  virtual double GetMaximum ( );
128  virtual double GetMaximum ( double & t );
129  virtual u_int GetMinimumIndex ( );
130  virtual u_int GetMaximumIndex ( );
131 
132  GRealSampleFFT & Derivate ( );
133  GRealSampleFFT & Derivate ( GRealSampleFFT & sample );
135  GRealSampleFFT & Integrate ( GRealSampleFFT & sample );
136 
137  //@}
138 
139  //----------------------------------------------------------
140  /** @name Function Functions for convolution / deconvolution */
141  //@{
142 
143  virtual int InterpolateFrom ( GRealSampleFFT & fct, double dt,
144  double t0, int mode = 0 );
145  virtual int InterpolateFrom ( GRealSampleFFT & fct, double dt,
146  int mode = 0 );
147 
148  virtual int SetTimeResponse ( GRealSampleFFT & signal,
149  GRealSampleFFT & resp,
150  int mode = 0 );
151 
152  virtual int SetConvolution ( GRealSampleFFT & signal,
153  GRealSampleFFT & resp,
154  bool inv = false,
155  int mode = 0 );
156 
157  virtual int SetProduct ( GRealSampleFFT & s1,
158  GRealSampleFFT & s2 );
159 
160  //@}
161 
162  //----------------------------------------------------------
163  /** @name Modification functions */
164  //@{
165  virtual GRealSampleFFT & DoubleSymmetric ( bool neg = false );
166  virtual GRealSampleFFT & HalfDivide ( );
167 
168  //@}
169 
170  //----------------------------------------------------------
171  /** @name Arithmetic operators */
172  //@{
173 
178 
181 
182  GRealSampleFFT operator * ( double r );
183  GRealSampleFFT operator / ( double r ); // inline
184  GRealSampleFFT & operator *= ( double r );
185  GRealSampleFFT & operator /= ( double r ); // inline
186 
187  GRealSampleFFT operator + ( double k );
188  GRealSampleFFT operator - ( double k ); // inline
189  GRealSampleFFT & operator += ( double k );
190  GRealSampleFFT & operator -= ( double k ); // inline
191 
192  //@}
193 
194 };
195 
196 //======================================================================
197 // Related functions
198 
199 extern GRealSampleFFT operator * ( double r, GRealSampleFFT & s );
200 
201 //======================================================================
202 // Inline functions
203 #include "icc/GRealSampleFFT.icc"
204 
205 
206 //======================================================================
207 #endif
virtual double GetMinimum()
Definition: GRealSampleFFT.cpp:737
virtual int SetConvolution(GRealSampleFFT &signal, GRealSampleFFT &resp, bool inv=false, int mode=0)
Definition: GRealSampleFFT.cpp:1378
virtual void InitTransformData(u_int n, const double data[])
Definition: GRealSampleFFT.cpp:410
virtual int ComputeTransformData()
Definition: GRealSampleFFT.cpp:617
GRealSampleFFT(u_int n=0, double dt=1.L)
Definition: GRealSampleFFT.cpp:20
GRealSampleFFT & operator+=(GRealSampleFFT &s)
Definition: GRealSampleFFT.cpp:1808
virtual int ComputeFunctionData()
Definition: GRealSampleFFT.cpp:651
virtual u_int GetMinimumIndex()
Definition: GRealSampleFFT.cpp:811
virtual double GetMean()
Definition: GRealSampleFFT.icc:87
virtual void SetFullBandFilter(double amp=1.L)
Definition: GRealSampleFFT.cpp:468
virtual u_int GetMaximumIndex()
Definition: GRealSampleFFT.cpp:829
Definition: GRealSampleFFT.hh:20
virtual double GetPower(bool f=false)
Definition: GRealSampleFFT.icc:104
GRealSampleFFT & Derivate()
Definition: GRealSampleFFT.cpp:848
virtual int InterpolateFrom(GRealSampleFFT &fct, double dt, double t0, int mode=0)
Definition: GRealSampleFFT.cpp:1035
GObject(GRealSampleFFT)
GRealSampleFFT & operator/=(double r)
Definition: GRealSampleFFT.icc:118
GRealSampleFFT & operator*=(GRealSampleFFT &s)
Definition: GRealSampleFFT.cpp:1868
virtual void InitFunctionData(u_int n, const double data[])
Definition: GRealSampleFFT.icc:19
GRealSampleFFT operator/(double r)
Definition: GRealSampleFFT.icc:112
virtual int SetFunctionValues(u_int i1, u_int i2, double val)
Definition: GRealSampleFFT.cpp:494
virtual ~GRealSampleFFT()
Definition: GRealSampleFFT.cpp:200
GRealSampleFFT & Integrate()
Definition: GRealSampleFFT.cpp:935
virtual void SetFunctionValue(u_int i, double val)
Definition: GRealSampleFFT.icc:31
GRealSampleFFT & operator-=(GRealSampleFFT &s)
Definition: GRealSampleFFT.cpp:1834
virtual void Normalise(double s=1.L)
Definition: GRealSampleFFT.cpp:721
virtual void SetFunctionData(double(*fct_ptr)(double, const double[]), const double fct_par[])
Definition: GRealSampleFFT.cpp:336
GRealSampleFFT & operator=(const GRealSampleFFT &original)
Definition: GRealSampleFFT.cpp:183
GRealSampleFFT operator*(GRealSampleFFT &s)
Definition: GRealSampleFFT.cpp:1857
GRealSampleFFT operator+(GRealSampleFFT &s)
Definition: GRealSampleFFT.cpp:1745
virtual GRealSampleFFT & HalfDivide()
Definition: GRealSampleFFT.cpp:1704
virtual double GetIntegral()
Definition: GRealSampleFFT.icc:93
GRealSampleFFT operator-(GRealSampleFFT &s)
Definition: GRealSampleFFT.cpp:1776
unsigned int u_int
Definition: GTypes.hh:38
virtual GRealSampleFFT & DoubleSymmetric(bool neg=false)
Definition: GRealSampleFFT.cpp:1671
virtual void SetFFTValue(u_int i, double re, double im=0.L)
Definition: GRealSampleFFT.icc:75
virtual double GetRMS()
Definition: GRealSampleFFT.cpp:700
GRealSampleFFT operator*(double r, GRealSampleFFT &s)
Definition: GRealSampleFFT.icc:139
virtual double GetMaximum()
Definition: GRealSampleFFT.cpp:774
virtual int SetProduct(GRealSampleFFT &s1, GRealSampleFFT &s2)
Definition: GRealSampleFFT.cpp:1598
virtual int SetTimeResponse(GRealSampleFFT &signal, GRealSampleFFT &resp, int mode=0)
Definition: GRealSampleFFT.cpp:1168
virtual void SetTransformValue(u_int i, double re, double im=0.L)
Definition: GRealSampleFFT.icc:48
Definition: GBaseSampleFFT.hh:60
virtual double GetSum()
Definition: GRealSampleFFT.cpp:686