MusicSpectrum  1.0.0
fft.hpp
Vá para a documentação desse arquivo.
1 #pragma once
2 
3 #include <cmath>
4 #include <complex>
5 #include <cstdint>
6 #include <vector>
7 
8 // Constantes
9 const float pi = M_PI;
10 using namespace std::complex_literals;
11 using Float_Complex = std::complex<float>;
12 
21 template <class T> class FFT {
22  private:
23  inline float amp(Float_Complex z);
24 
25  std::size_t bitReverse(std::size_t k, std::size_t n);
26 
27  void applyHannWindow(std::vector<T> &in, std::size_t n);
28  void applyHammingWindow(std::vector<T> &in, std::size_t n);
29  void applyBlackmanWindow(std::vector<T> &in, std::size_t n);
30  void applyFlattopWindow(std::vector<T> &in, std::size_t n);
31 
32  void fft(std::vector<T> &in, std::size_t stride,
33  std::vector<Float_Complex> &out, std::size_t n);
34 
35  public:
36  void fftAnalyze(std::vector<T> &in, std::size_t stride,
37  std::vector<Float_Complex> &out, std::size_t n);
38 };
39 
40 // Instanciações da classe para tipos de dados suportados
41 template class FFT<int>;
42 template class FFT<short>;
43 template class FFT<std::uint8_t>;
44 template class FFT<std::uint16_t>;
Definition: fft.hpp:21
std::complex< float > Float_Complex
Definition: fft.hpp:11
const float pi
Definition: fft.hpp:9