Real-time spectrum analyzer for ST Nucleo F401RE using Seeed Studio 2.8'' TFT Touch Shield V2.0.

Dependencies:   SeeedStudioTFTv2 UITDSP_ADDA 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 // Copyright (c) 2014 MIKAMI, Naoki,  2014/12/21
00004 //-------------------------------------------------------------------
00005 
00006 #ifndef HAMMING_WINDOW_HPP
00007 #define HAMMING_WINDOW_HPP
00008 
00009 #include "mbed.h"
00010 
00011 namespace Mikami
00012 {
00013     class HammingWindow
00014     {
00015     private:
00016         const int N_;
00017         const int NFFT_;
00018                 
00019         float* w_;
00020 
00021     public:
00022         // Constructor
00023         HammingWindow(uint16_t nData, uint16_t nFft)
00024                 : N_(nData), NFFT_(nFft)
00025         {
00026             w_ = new float[nData];
00027             float pi2L = 6.283185f/(float)nData;
00028             for (int k=0; k<nData; k++)
00029                 w_[k] = 0.54f - 0.46f*cosf(k*pi2L);
00030         }
00031         
00032         // Destructor
00033         ~HammingWindow() {delete[] w_;}
00034         
00035         // Windowing
00036         void Execute(const float x[], float y[])
00037         {
00038             for (int n=0; n<N_; n++) y[n] = x[n]*w_[n];
00039             for (int n=N_; n<NFFT_; n++) y[n] = 0;
00040         }
00041     };
00042 }
00043 #endif  // HAMMING_WINDOW_HPP
00044