d@0
|
1 /*
|
d@0
|
2 ==============================================================================
|
d@0
|
3
|
d@0
|
4 FFT.h
|
d@0
|
5 Created: 11 Aug 2014 11:18:53am
|
d@0
|
6 Author: mickael.legoff
|
d@0
|
7
|
d@0
|
8 ==============================================================================
|
d@0
|
9 */
|
d@0
|
10
|
d@0
|
11 #ifndef FFT_H_INCLUDED
|
d@0
|
12 #define FFT_H_INCLUDED
|
d@0
|
13
|
d@0
|
14 #include "FFTW.h"
|
d@0
|
15
|
d@0
|
16
|
d@0
|
17 template < typename FFTImpl >
|
d@0
|
18 class FastFourierTransform
|
d@0
|
19 {
|
d@0
|
20
|
d@0
|
21 public:
|
d@9
|
22 FastFourierTransform(){};
|
d@0
|
23 FastFourierTransform( unsigned fftLength )
|
d@0
|
24 : m_fft_impl( fftLength )
|
d@0
|
25 {
|
d@0
|
26
|
d@9
|
27 std::vector<float> m_realPart = std::vector<float>(fftLength, 0);
|
d@9
|
28 std::vector<float> m_imagPart = std::vector<float>(fftLength, 0);
|
d@0
|
29 }
|
d@0
|
30
|
d@0
|
31 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
d@0
|
32
|
d@0
|
33 ~FastFourierTransform()
|
d@0
|
34 {
|
d@0
|
35
|
d@0
|
36 }
|
d@0
|
37
|
d@0
|
38 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
d@0
|
39
|
d@0
|
40 void process( const float* input ) { m_fft_impl.process( input , m_realPart , m_imagPart ); }
|
d@0
|
41
|
d@0
|
42 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
d@0
|
43
|
d@9
|
44 std::vector<float> realPart() { return m_realPart; }
|
d@9
|
45 std::vector<float> imagPart() { return m_imagPart; }
|
d@0
|
46
|
d@0
|
47 private:
|
d@0
|
48
|
d@9
|
49 std::vector<float> m_realPart;
|
d@9
|
50 std::vector<float> m_imagPart;
|
d@0
|
51
|
d@0
|
52 FFTImpl m_fft_impl;
|
d@0
|
53
|
d@0
|
54 };
|
d@0
|
55
|
d@0
|
56
|
d@0
|
57 typedef FastFourierTransform<FFTW> FFT;
|
d@0
|
58
|
d@0
|
59
|
d@0
|
60 #endif // FFT_H_INCLUDED
|