Fourier library: Operations in the Fourier domain

◆ operator()() [2/4]

DRFFTWAFF::Tseries fourier::fft::DRFFTWAFF::operator() ( const Tspectrum::Tcoc &  s,
const bool &  debug = false 
) const

Transform Fourier coefficients to time series.

No scaling is applied.

Definition at line 261 of file fftwaff.cc.

References create_plan_backward(), Mplan_backward, Mseries, Msize, Mspectrum, seriessize(), set_size(), size(), and ssize().

263  {
264  // check number of expected Fourier coefficients
265  if (this->ssize() != s.size())
266  {
267  // adjust FFT size
268  int seriessize=DRFFTWAFF::seriessize(s.size());
269  // is Nyquits coefficients real?
270  // this measure can only be effective if the Nyquist coefficient is
271  // finite, which will not be the case for most signals
272  if (std::abs(s(s.size()).imag()) < 1.e-8*std::abs(s(s.size()).real()))
273  { --seriessize; }
274  this->set_size(seriessize);
275  }
276 
277 #ifdef FFTWFALLBACK
278  Tseries retval(Msize);
279  aff::Series<fftw_real> out(Msize);
280  aff::Series<fftw_real> in(Msize);
281  fftw_real* pout=out.pointer();
282  fftw_real* pin=in.pointer();
283  in(0)=s(0).real();
284  for (int i=1; i<((Msize+1)/2); ++i)
285  {
286  in(i)=s(i).real();
287  in(Msize-i)=s(i).imag();
288  }
289  if ((Msize % 2) == 0)
290  {
291  in(Msize/2)=s(Msize/2).real();
292  }
293  this->create_plan_backward();
294  rfftw_one(Mplan_backward, pin, pout);
295  retval.copyin(out);
296 #else
297  Tseries retval(this->size());
298  this->create_plan_backward();
299  Mspectrum.copyin(s);
300  fftw_execute(Mplan_backward);
301  retval.copyin(Mseries);
302 #endif
303  return(retval);
304  } // Tseries DRFFTWAFF::operator()(const Tspectrum::Tcoc& s) const
fftw_plan Mplan_backward
Definition: fftwaff.h:193
void create_plan_backward() const
create plan.
Definition: fftwaff.cc:83
unsigned int size() const
Definition: fftwaff.h:163
static unsigned int seriessize(const unsigned int &n)
return number of samples for given number of coefficients
Definition: fftwaff.h:173
void set_size(const unsigned int &n) const
prepare FFT settings for size n.
Definition: fftwaff.cc:115
aff::Series< Tvalue > Tseries
unsigned int Msize
Definition: fftwaff.h:187
unsigned int ssize() const
Definition: fftwaff.h:183
Here is the call graph for this function: