Version using MEMS microphone and CODEC for the program "F746_RealtimeSpectrumAnalyzer". "F746_RealtimeSpectrumAnalyzer" の入力を MEMS のマイクと CODEC に変更.このプログラムは Tomona Nanase さんが作成し DISCO-F746NG_Oscilloscope の名前で登録しているプログラムで, CODEC を使って入力する部分を参考にして作成.このプログラムの説明は,CQ出版社のインターフェース誌,2016年4月号に掲載.

Dependencies:   BSP_DISCO_F746NG BUTTON_GROUP LCD_DISCO_F746NG TS_DISCO_F746NG UIT_FFT_Real mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Hamming.hpp Source File

Hamming.hpp

00001 //-------------------------------------------------------------------
00002 //  Hamming windowing with zero-padding
00003 //
00004 //  2015/12/17, Copyright (c) 2015 MIKAMI, Naoki
00005 //-------------------------------------------------------------------
00006 
00007 #ifndef HAMMING_WINDOW_HPP
00008 #define HAMMING_WINDOW_HPP
00009 
00010 #include "mbed.h"
00011 
00012 namespace Mikami
00013 {
00014     class HammingWindow
00015     {
00016     public:
00017         // Constructor
00018         HammingWindow(uint16_t nData, uint16_t nFft)
00019                 : N_(nData), NFFT_(nFft), w_(new float[nData])
00020         {
00021             float pi2L = 6.283185f/(float)nData;
00022             for (int k=0; k<nData; k++)
00023                 w_[k] = 0.54f - 0.46f*cosf(k*pi2L);
00024         }
00025         
00026         // Destructor
00027         ~HammingWindow() {delete[] w_;}
00028         
00029         // Windowing
00030         void Execute(const float x[], float y[])
00031         {
00032             for (int n=0; n<N_; n++) y[n] = x[n]*w_[n];
00033             for (int n=N_; n<NFFT_; n++) y[n] = 0;
00034         }
00035 
00036     private:
00037         const int N_;
00038         const int NFFT_;
00039                 
00040         float* w_;
00041 
00042         // disallow copy constructor and assignment operator
00043         HammingWindow(const HammingWindow& );
00044         HammingWindow& operator=(const HammingWindow& );
00045     };
00046 }
00047 #endif  // HAMMING_WINDOW_HPP