1 #include <utl/FFTDataContainer.h>
2 #include <utl/ErrorLogger.h>
16 const unsigned int np = fFrequencySpectrum.GetSize();
17 const unsigned int n = (np - 1) * 2;
20 fUpToDateDomain = eBoth;
21 WARNING(
"Warning: trying to do FFT on empty channel frequency spectrum!");
31 for (
unsigned int i = 0; i < np; ++i)
32 g[i] = fFrequencySpectrum[i] * fFrequencySpectrum.GetBinning();
37 fTimeSeries.Adopt(f, n);
38 fTimeSeries.SetBinning(1. / (fFrequencySpectrum.GetBinning() * n));
43 fUpToDateDomain = eBoth;
53 unsigned int nop = fTimeSeries.GetSize();
54 if ((nop / 2)*2 != nop) {
55 fTimeSeries.PopBack();
56 nop = fTimeSeries.GetSize();
60 fUpToDateDomain = eBoth;
61 WARNING(
"Warning: trying to do FFT on empty channel time series!");
65 const unsigned int n = fTimeSeries.GetSize();
66 const unsigned int np = n/2 + 1;
74 for (
unsigned int i = 0; i < n; ++i)
75 f[i] = fTimeSeries[i] * fTimeSeries.GetBinning();
80 fFrequencySpectrum.Adopt(g, np);
81 fFrequencySpectrum.SetBinning(0.5 / (fTimeSeries.GetBinning() * (np - 1)));
86 fUpToDateDomain = eBoth;
95 const unsigned int np = fFrequencySpectrum.GetSize();
96 const unsigned int n = (np - 1) * 2;
99 fUpToDateDomain = eBoth;
100 WARNING(
"Warning: trying to do FFT on empty station frequency spectrum!");
111 for (
int j = 0; j < 3; ++j) {
113 for (
unsigned int i = 0; i < np; ++i)
114 g[i] = fFrequencySpectrum[i][j] * fFrequencySpectrum.GetBinning();
117 for (
unsigned int i = 0; i < n; ++i)
118 resultTimeSeries[i][j] = f[i];
120 fTimeSeries.Adopt(resultTimeSeries, n);
121 fTimeSeries.SetBinning(1. / (fFrequencySpectrum.GetBinning() * n));
125 delete[] resultTimeSeries;
127 fUpToDateDomain = eBoth;
138 unsigned int nop = fTimeSeries.GetSize();
139 if ((nop / 2)*2 != nop) {
140 fTimeSeries.PopBack();
141 nop = fTimeSeries.GetSize();
145 fUpToDateDomain = eBoth;
146 WARNING(
"Warning: trying to do FFT on empty station time series!");
150 const unsigned int n = fTimeSeries.GetSize();
151 const unsigned int np = n/2 + 1;
160 for (
int j = 0; j < 3; ++j) {
162 for (
unsigned int i = 0; i < n; ++i)
163 f[i] = fTimeSeries[i][j] * fTimeSeries.GetBinning();
166 for (
unsigned int i = 0; i < np; ++i)
167 resultSpectrum[i][j] = g[i];
169 fFrequencySpectrum.Adopt(resultSpectrum, np);
170 fFrequencySpectrum.SetBinning(0.5 / (fTimeSeries.GetBinning() * (np - 1)));
174 delete[] resultSpectrum;
176 fUpToDateDomain = eBoth;
void fft(Complex *in, Complex *out=NULL)
#define WARNING(message)
Macro for logging warning messages.
Template class for a data container that offers and takes both time series and corresponding frequenc...