45 #include "Interval.hh" 49 #include "TFFTComplexReal.h" 50 #include "TFFTRealComplex.h" 53 template<
class DataType_t>
78 virtual DataType_t &
operator[](
const unsigned int);
81 inline virtual size_t limit()
const;
107 virtual void Dump(
const char*,
int=0);
110 virtual void DumpBinary(
const char*,
int = 0);
113 virtual void DumpShort(
const char*,
int=0);
124 virtual void FFT(
int = 1);
125 virtual void FFTW(
int = 1);
130 virtual void resample(
double,
int=6);
135 virtual void delay(
double T);
151 virtual double median(
size_t=0,
size_t=0)
const;
158 bool fl=
false,
size_t n=1);
161 virtual double mean()
const;
165 virtual double mean(
double f);
175 bool fl=
false,
size_t n=1);
178 virtual double rms();
188 bool fl=
false,
size_t n=1);
191 virtual DataType_t
max()
const;
198 virtual DataType_t
min()
const;
202 for(
size_t i=0;
i<this->
size();
i++)
203 if(this->
data[
i]>0.) this->
data[
i]=(DataType_t)sqrt(
double(this->
data[
i]));
208 inline void hann(
void);
213 virtual void waveSort(DataType_t** pp,
size_t l=0,
size_t r=0)
const;
216 virtual void waveSort(
size_t l=0,
size_t r=0);
221 virtual void waveSplit(DataType_t** pp,
size_t l,
size_t r,
size_t m)
const;
223 virtual DataType_t
waveSplit(
size_t l,
size_t r,
size_t m);
242 DataType_t
rank(
double=0.5)
const;
255 virtual void spesla(
double,
double,
double=0.);
265 virtual void lprFilter(
double,
int=0,
double=0.,
double=0.,
int=0);
282 inline DataType_t
get(
size_t i) {
return data[
i]; }
284 inline DataType_t
get(
double t,
double dt=0.);
287 inline long rand48(
long k=1024){
return long(
k*drand48()); }
291 virtual void resize(
unsigned int);
301 size_t append(DataType_t);
333 inline static int compare(
const void *
x,
const void *
y){
334 DataType_t
a = *(*(DataType_t**)x) - *(*(DataType_t**)y);
343 template<
class DataType_t>
347 template<
class DataType_t>
351 template<
class DataType_t>
359 template<
class Tout,
class Tin>
362 size_t N = ain.
size();
368 for (
unsigned int i=0;
i <
N;
i++) aout.
data[
i] = (Tout)ain.
data[
i];
371 template<
class DataType_t>
374 double phi = 2*3.141592653589793/
size();
375 double www = sqrt(2./3.);
377 for(
int i=0;
i<nn;
i++)
data[
i] *= DataType_t(www*(1.-cos(
i*phi)));
380 template<
class DataType_t>
388 int m =
int((t+dt)*Rate);
390 if(
int(t*Rate)<0 ||
int(t*Rate)>=
Size) {
391 printf(
"wavearray<DataType_t>::get(double t): time out of range\n");
394 if(n>=m)
return data[size_t(t*Rate)];
397 return sqrt(sum/(m-n+1));
400 #endif // WAVEARRAY_HH wavearray< double > t(hp.size())
size_t append(const wavearray< DataType_t > &)
virtual DataType_t min() const
virtual double stop() const
virtual wavearray< double > getLPRFilter(int, int=0, int=0)
virtual void rate(double r)
virtual void ReadShort(const char *)
wavearray< double > a(hp.size())
virtual void edge(double s)
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<< "\ layers : "<< nLAYERS<< "\ dF(hz) : "<< dF<< "\ 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 > &)
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 wavearray< DataType_t > & operator*=(wavearray< DataType_t > &)
virtual void start(double s)
virtual void Browse(TBrowser *b)
void waveAssign(wavearray< Tout > &aout, wavearray< Tin > &ain)
cout<< "SNR "<< xsnr<< endl;wavearray< double > f
virtual void waveSplit(DataType_t **pp, size_t l, size_t r, size_t m) const
virtual size_t size() const
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)
virtual double rate() const
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 int getSampleRankE(size_t n, size_t l, size_t r) const
printf("total live time: non-zero lags = %10.1f \, liveTot)
virtual double start() const
virtual wavearray< DataType_t > & operator+=(wavearray< DataType_t > &)
virtual size_t limit() const
virtual double edge() const
virtual void DumpBinary(const char *, int=0)
virtual std::slice getSlice() const
virtual void lprFilter(wavearray< double > &)
virtual double mean() const
virtual void delay(double T)
virtual void DumpShort(const char *, int=0)
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.)
virtual void waveSort(DataType_t **pp, size_t l=0, size_t r=0) const
void resample(const wavearray< DataType_t > &, double, int=6)
DataType_t rank(double=0.5) const
virtual wavearray< DataType_t > & operator[](const std::slice &)
virtual void Dump(const char *, int=0)
virtual DataType_t max() const
virtual void exponential(double)
double getStatistics(double &mean, double &rms) const
virtual wavearray< double > white(double, int=0, double=0., double=0.) const
double Stack(const wavearray< DataType_t > &, int)
virtual void resize(unsigned int)
virtual double median(size_t=0, size_t=0) const
virtual int getSampleRank(size_t n, size_t l, size_t r) const
void cpf(const wavearray< DataType_t > &, int=0, int=0, int=0)