スペクトログラム このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.

Dependencies:   Array_Matrix mbed SerialTxRxIntr DSP_ADDA UIT_FFT_Real Window

Committer:
MikamiUitOpen
Date:
Thu Sep 09 08:55:42 2021 +0000
Revision:
0:3bf11d2ab6ad
Child:
1:d4e3f39ce206
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:3bf11d2ab6ad 1 //-------------------------------------------------------
MikamiUitOpen 0:3bf11d2ab6ad 2 // スペクトログラムで使う FFT 解析用クラス(ヘッダ)
MikamiUitOpen 0:3bf11d2ab6ad 3 //
MikamiUitOpen 0:3bf11d2ab6ad 4 // 2021/05/24, Copyright (c) 2021 MIKAMI, Naoki
MikamiUitOpen 0:3bf11d2ab6ad 5 //-------------------------------------------------------
MikamiUitOpen 0:3bf11d2ab6ad 6
MikamiUitOpen 0:3bf11d2ab6ad 7 #ifndef FFT_SPECTROGRAM_HPP
MikamiUitOpen 0:3bf11d2ab6ad 8 #define FFT_SPECTROGRAM_HPP
MikamiUitOpen 0:3bf11d2ab6ad 9
MikamiUitOpen 0:3bf11d2ab6ad 10 #include "Array.hpp"
MikamiUitOpen 0:3bf11d2ab6ad 11 #include "fftReal.hpp"
MikamiUitOpen 0:3bf11d2ab6ad 12 #include "Hamming.hpp"
MikamiUitOpen 0:3bf11d2ab6ad 13
MikamiUitOpen 0:3bf11d2ab6ad 14 namespace Mikami
MikamiUitOpen 0:3bf11d2ab6ad 15 {
MikamiUitOpen 0:3bf11d2ab6ad 16 class FftSpectropgram
MikamiUitOpen 0:3bf11d2ab6ad 17 {
MikamiUitOpen 0:3bf11d2ab6ad 18 public:
MikamiUitOpen 0:3bf11d2ab6ad 19 // nData: 解析で使うデータ数
MikamiUitOpen 0:3bf11d2ab6ad 20 // nFft: 解析で使う FFT の点数
MikamiUitOpen 0:3bf11d2ab6ad 21 FftSpectropgram(int nData, int nFft);
MikamiUitOpen 0:3bf11d2ab6ad 22 virtual ~FftSpectropgram() {}
MikamiUitOpen 0:3bf11d2ab6ad 23 void Execute(const Array<float> &xn, Array<float> &db);
MikamiUitOpen 0:3bf11d2ab6ad 24 // 高域強調の程度を決める定数の設定(b1 = 1 で差分,b1 = 0 で高域強調なし)
MikamiUitOpen 0:3bf11d2ab6ad 25 void SetHighEmphasizer(float b1) { b1_ = b1; }
MikamiUitOpen 0:3bf11d2ab6ad 26
MikamiUitOpen 0:3bf11d2ab6ad 27 private:
MikamiUitOpen 0:3bf11d2ab6ad 28 const int N_DATA_;
MikamiUitOpen 0:3bf11d2ab6ad 29 const int N_FFT_;
MikamiUitOpen 0:3bf11d2ab6ad 30
MikamiUitOpen 0:3bf11d2ab6ad 31 FftReal fft_;
MikamiUitOpen 0:3bf11d2ab6ad 32 HammingWindow wHm_;
MikamiUitOpen 0:3bf11d2ab6ad 33 float b1_;
MikamiUitOpen 0:3bf11d2ab6ad 34
MikamiUitOpen 0:3bf11d2ab6ad 35 Array<float> xData_; // 解析で使うデータ
MikamiUitOpen 0:3bf11d2ab6ad 36 Array<float> wData_; // 窓掛けされたデータ
MikamiUitOpen 0:3bf11d2ab6ad 37 Array<Complex> yFft_; // FFT の出力
MikamiUitOpen 0:3bf11d2ab6ad 38
MikamiUitOpen 0:3bf11d2ab6ad 39 float Norm(Complex x)
MikamiUitOpen 0:3bf11d2ab6ad 40 { return x.real()*x.real() + x.imag()*x.imag(); }
MikamiUitOpen 0:3bf11d2ab6ad 41
MikamiUitOpen 0:3bf11d2ab6ad 42 // コピー・コンストラクタおよび代入演算子の禁止のため
MikamiUitOpen 0:3bf11d2ab6ad 43 FftSpectropgram(const FftSpectropgram& );
MikamiUitOpen 0:3bf11d2ab6ad 44 FftSpectropgram& operator=(const FftSpectropgram& );
MikamiUitOpen 0:3bf11d2ab6ad 45 };
MikamiUitOpen 0:3bf11d2ab6ad 46 }
MikamiUitOpen 0:3bf11d2ab6ad 47 #endif // FFT_SPECTROGRAM_HPP