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:
Mon Jan 13 08:54:18 2020 +0000
Revision:
3:dc123081d491
Parent:
2:9649d0e2bb4a
Child:
4:0b4975fffc90
4

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