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

Committer:
MikamiUitOpen
Date:
Sat Dec 12 03:20:09 2020 +0000
Revision:
4:0b4975fffc90
Parent:
3:dc123081d491
5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:982a9acf3a07 1 //-------------------------------------------------------------------
MikamiUitOpen 3:dc123081d491 2 // データが実数の場合の FFT class(ヘッダ)
MikamiUitOpen 3:dc123081d491 3 //
MikamiUitOpen 4:0b4975fffc90 4 // 2020/12/12, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:982a9acf3a07 5 //-------------------------------------------------------------------
MikamiUitOpen 0:982a9acf3a07 6
MikamiUitOpen 0:982a9acf3a07 7 #ifndef FFT_REAL_HPP
MikamiUitOpen 0:982a9acf3a07 8 #define FFT_REAL_HPP
MikamiUitOpen 0:982a9acf3a07 9
MikamiUitOpen 4:0b4975fffc90 10 #include "Array.hpp" // "Array_Matrix" という名前で Mbed に登録
MikamiUitOpen 3:dc123081d491 11 #include <complex> // complex で使用
MikamiUitOpen 0:982a9acf3a07 12
MikamiUitOpen 0:982a9acf3a07 13 namespace Mikami
MikamiUitOpen 0:982a9acf3a07 14 {
MikamiUitOpen 4:0b4975fffc90 15 typedef complex<float> Complex; // "Complex" の定義
MikamiUitOpen 0:982a9acf3a07 16
MikamiUitOpen 0:982a9acf3a07 17 class FftReal
MikamiUitOpen 0:982a9acf3a07 18 {
MikamiUitOpen 2:9649d0e2bb4a 19 public:
MikamiUitOpen 3:dc123081d491 20 // コンストラクタ
MikamiUitOpen 2:9649d0e2bb4a 21 explicit FftReal(int16_t n);
MikamiUitOpen 3:dc123081d491 22 // FFT の実行
MikamiUitOpen 2:9649d0e2bb4a 23 void Execute(const float x[], Complex y[]);
MikamiUitOpen 3:dc123081d491 24 // IFFT の実行
MikamiUitOpen 2:9649d0e2bb4a 25 void ExecuteIfft(const Complex y[], float x[]);
MikamiUitOpen 2:9649d0e2bb4a 26
MikamiUitOpen 0:982a9acf3a07 27 private:
MikamiUitOpen 0:982a9acf3a07 28 const int N_FFT_;
MikamiUitOpen 0:982a9acf3a07 29 const float N_INV_;
MikamiUitOpen 3:dc123081d491 30 Array<Complex> wTable_; // 回転子
MikamiUitOpen 3:dc123081d491 31 Array<uint16_t> bTable_; // ビット逆順
MikamiUitOpen 3:dc123081d491 32 Array<Complex> u_; // 作業領域
MikamiUitOpen 0:982a9acf3a07 33
MikamiUitOpen 3:dc123081d491 34 // 最終ステージを除いた処理
MikamiUitOpen 1:559a63853f3f 35 void ExcludeLastStage();
MikamiUitOpen 4:0b4975fffc90 36 // IFFT のビット逆順の並べ替えで使用
MikamiUitOpen 4:0b4975fffc90 37 int Index(int n) const { return (N_FFT_-bTable_[n]); }
MikamiUitOpen 0:982a9acf3a07 38
MikamiUitOpen 3:dc123081d491 39 // コピー・コンストラクタおよび代入演算子の禁止のため
MikamiUitOpen 0:982a9acf3a07 40 FftReal(const FftReal& );
MikamiUitOpen 0:982a9acf3a07 41 FftReal& operator=(const FftReal& );
MikamiUitOpen 0:982a9acf3a07 42 };
MikamiUitOpen 0:982a9acf3a07 43 }
MikamiUitOpen 4:0b4975fffc90 44 #endif // FFT_REAL_HPP