FFT によるスペクトル解析器
Dependencies: Array_Matrix mbed SerialTxRxIntr UIT_FFT_Real DSP_ADDA
Blackman.hpp
00001 //------------------------------------------------------------------- 00002 // Blackman 窓による窓掛け 00003 // ゼロ詰め(zero-padding)の機能を持つ 00004 // 00005 // 2020/11/07, Copyright (c) 2020 MIKAMI, Naoki 00006 //------------------------------------------------------------------- 00007 00008 #ifndef HAMMING_WINDOW_HPP 00009 #define HAMMING_WINDOW_HPP 00010 00011 #include "mbed.h" 00012 #include "Array.hpp" 00013 00014 namespace Mikami 00015 { 00016 class BlackmanWindow 00017 { 00018 public: 00019 // コンストラクタ 00020 BlackmanWindow(uint16_t nData, uint16_t nFft) 00021 : N_(nData), NFFT_(nFft), w_(nData) 00022 { 00023 const float PI2L = 6.283185f/(float)nData; 00024 const float PI4L = 2*PI2L; 00025 for (int k=0; k<nData; k++) 00026 w_[k] = 0.42f - 0.5f*cosf(k*PI2L) + 0.08f*cosf(k*PI4L); 00027 } 00028 00029 // デストラクタ 00030 virtual ~BlackmanWindow() {} 00031 00032 // 窓掛けを実行 00033 void Execute(const Array<float> &x, Array<float> &y) 00034 { 00035 for (int n=0; n<N_; n++) y[n] = x[n]*w_[n]; 00036 for (int n=N_; n<NFFT_; n++) y[n] = 0; 00037 } 00038 00039 private: 00040 const int N_; 00041 const int NFFT_; 00042 00043 Array<float> w_; 00044 00045 // コピー・コンストラクタおよび代入演算子の禁止のため 00046 BlackmanWindow(const BlackmanWindow& ); 00047 BlackmanWindow& operator=(const BlackmanWindow& ); 00048 }; 00049 } 00050 #endif // HAMMING_WINDOW_HPP
Generated on Fri Jul 15 2022 00:11:09 by 1.7.2