FFT for real data using decimation-in-frequency algorithm. 実データに対するFFT.周波数間引きアルゴリズムを使用. このライブラリを登録した際のプログラム: Demo_FFT_IFFT
Dependents: UIT2_SpectrumAnalyzer F746_SpectralAnalysis_NoPhoto F746_FFT_Speed F746_RealtimeSpectrumAnalyzer ... more
Diff: fftReal.hpp
- Revision:
- 0:982a9acf3a07
- Child:
- 1:559a63853f3f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fftReal.hpp Fri Dec 19 12:10:34 2014 +0000 @@ -0,0 +1,46 @@ +//------------------------------------------------------------------- +// FFT class for real data ---- Header +// This class can execute FFT and IFFT +// Copyright (c) 2014 MIKAMI, Naoki, 2014/12/19 +//------------------------------------------------------------------- + +#ifndef FFT_REAL_HPP +#define FFT_REAL_HPP + +#include "mbed.h" +#include <complex> // requisite for complex + +namespace Mikami +{ + typedef complex<float> Complex; // define "Complex" + + class FftReal + { + private: + const int N_FFT_; + const float N_INV_; + + Complex* wTable_; // twiddle factor + uint16_t* bTable_; // for bit reversal + Complex* u_; // working area + + // Processing except for last stage + void ExcludeLastTtage(); + // Use for reordering of rit reversal in IFFT + int Index(int n) { return (N_FFT_-bTable_[n]); } + + FftReal(const FftReal& ); + FftReal& operator=(const FftReal& ); + + public: + // Constructor + explicit FftReal(int16_t n); + // Destructor + ~FftReal(); + // Execute FFT + void Execute(const float x[], Complex y[]); + // Execute IFFT + void ExecuteIfft(const Complex y[], float x[]); + }; +} +#endif // FFT_REAL_HPP