27 #include "Interval.hh"
31 #include "TFFTComplexReal.h"
32 #include "TFFTRealComplex.h"
35 template<
class DataType_t>
60 virtual DataType_t &
operator[](
const unsigned int);
63 inline virtual size_t limit()
const;
89 virtual void Dump(
const char*,
int=0);
95 virtual void DumpShort(
const char*,
int=0);
106 virtual void FFT(
int = 1);
107 virtual void FFTW(
int = 1);
112 virtual void resample(
double,
int=6);
117 virtual void delay(
double T);
133 virtual double median(
size_t=0,
size_t=0)
const;
140 bool fl=
false,
size_t n=1);
143 virtual double mean()
const;
147 virtual double mean(
double f);
157 bool fl=
false,
size_t n=1);
160 virtual double rms();
170 bool fl=
false,
size_t n=1);
173 virtual DataType_t
max()
const;
180 virtual DataType_t
min()
const;
184 for(
size_t i=0;
i<this->
size();
i++)
185 if(this->
data[
i]>0.) this->
data[
i]=(DataType_t)sqrt(
double(this->
data[
i]));
190 inline void hann(
void);
195 virtual void waveSort(DataType_t** pp,
size_t l=0,
size_t r=0)
const;
198 virtual void waveSort(
size_t l=0,
size_t r=0);
203 virtual void waveSplit(DataType_t** pp,
size_t l,
size_t r,
size_t m)
const;
205 virtual DataType_t
waveSplit(
size_t l,
size_t r,
size_t m);
224 DataType_t
rank(
double=0.5)
const;
237 virtual void spesla(
double,
double,
double=0.);
247 virtual void lprFilter(
double,
int=0,
double=0.,
double=0.);
265 inline DataType_t
get(
size_t i) {
return data[
i]; }
266 inline DataType_t
get(
double t);
269 inline long rand48(
long k=1024){
return long(
k*drand48()); }
273 virtual void resize(
unsigned int);
283 size_t append(DataType_t);
315 inline static int compare(
const void *
x,
const void *
y){
316 DataType_t
a = *(*(DataType_t**)x) - *(*(DataType_t**)y);
325 template<
class DataType_t>
327 {
return Slice.start() + (Slice.size()-1)*Slice.stride() + 1; }
329 template<
class DataType_t>
333 template<
class DataType_t>
337 if(N>Slice.size()) N=Slice.size();
338 return Slice.start() + (N-1)*Slice.stride() + 1;
341 template<
class Tout,
class Tin>
344 size_t N = ain.
size();
350 for (
unsigned int i=0;
i <
N;
i++) aout.
data[
i] = (Tout)ain.
data[
i];
353 template<
class DataType_t>
356 double phi = 2*3.141592653589793/
size();
357 double www = sqrt(2./3.);
359 for(
int i=0;
i<nn;
i++) data[
i] *= DataType_t(www*(1.-cos(
i*phi)));
362 template<
class DataType_t>
366 if(t<0. || t>Size/
Rate) {
367 printf(
"wavearray<DataType_t>::get(double t): time out of range\n");
370 return data[size_t(t*
Rate)];
373 #endif // WAVEARRAY_HH
wavearray< double > t(hp.size())
size_t append(const wavearray< DataType_t > &)
virtual size_t size() const
printf("total live time: non-zero lags = %10.1f \n", liveTot)
virtual void rate(double r)
virtual void ReadShort(const char *)
wavearray< double > a(hp.size())
virtual double start() const
virtual void edge(double s)
virtual double edge() const
double getStatistics(double &mean, double &rms) const
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1)*itime+ifreq;double time=itime *dT;double freq=(ifreq >0)?ifreq *dF:dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
wavearray< DataType_t > & operator=(const wavearray< DataType_t > &)
virtual int getSampleRankE(size_t n, size_t l, size_t r) const
void add(const wavearray< DataType_t > &, int=0, int=0, int=0)
virtual void ReadBinary(const char *, int=0)
virtual void setSlice(const std::slice &s)
virtual std::slice getSlice() const
virtual wavearray< DataType_t > & operator*=(wavearray< DataType_t > &)
virtual size_t limit() const
virtual double median(size_t=0, size_t=0) const
virtual void start(double s)
virtual void Browse(TBrowser *b)
virtual DataType_t min() const
void waveAssign(wavearray< Tout > &aout, wavearray< Tin > &ain)
virtual double mean() const
DataType_t rank(double=0.5) const
virtual DataType_t max() const
virtual wavearray< double > getLPRFilter(size_t, size_t=0)
virtual void DumpObject(const char *)
void sub(const wavearray< DataType_t > &, int=0, int=0, int=0)
virtual char * operator>>(char *)
size_t wavecount(double x, int n=0)
static int compare(const void *x, const void *y)
pointer to inverse fftw object
TFFTComplexReal * ifftw
pointer to direct fftw object
void Resample(const wavearray< DataType_t > &, double, int=6)
virtual double stop() const
virtual wavearray< DataType_t > & operator+=(wavearray< DataType_t > &)
virtual int getSampleRank(size_t n, size_t l, size_t r) const
virtual void DumpBinary(const char *, int=0)
virtual void lprFilter(wavearray< double > &)
virtual void waveSort(DataType_t **pp, size_t l=0, size_t r=0) const
virtual void delay(double T)
virtual void DumpShort(const char *, int=0)
virtual wavearray< double > white(double, int=0, double=0., double=0.) const
virtual void stop(double s)
virtual wavearray< DataType_t > & operator-=(wavearray< DataType_t > &)
double fabs(const Complex &x)
virtual void spesla(double, double, double=0.)
void resample(const wavearray< DataType_t > &, double, int=6)
virtual wavearray< DataType_t > & operator[](const std::slice &)
virtual void Dump(const char *, int=0)
virtual void exponential(double)
virtual double rate() const
double Stack(const wavearray< DataType_t > &, int)
virtual void resize(unsigned int)
virtual void waveSplit(DataType_t **pp, size_t l, size_t r, size_t m) const
void cpf(const wavearray< DataType_t > &, int=0, int=0, int=0)