HanningWindow, HammingWindow, BlackmanWindow の各クラス. このライブラリを登録した際のプログラム: Demo_Window

Dependents:   TrG_FFT_Analyzer Demo_Window TrG_Spectrogram

Revision:
1:d8673bf6f89c
Parent:
0:823e9a4ab223
--- a/Blackman.hpp	Sun May 23 06:25:26 2021 +0000
+++ b/Blackman.hpp	Wed Nov 10 05:47:10 2021 +0000
@@ -2,7 +2,7 @@
 //  Blackman 窓による窓掛け
 //      ゼロ詰め(zero-padding)の機能を持つ
 //
-//  2021/05/22, Copyright (c) 2021 MIKAMI, Naoki
+//  2021/11/10, Copyright (c) 2021 MIKAMI, Naoki
 //-------------------------------------------------------------------
 
 #ifndef BLACKMAN_WINDOW_HPP
@@ -17,17 +17,17 @@
     public:
         // コンストラクタ
         BlackmanWindow(uint16_t nFft, uint16_t nData)
-                : WindowBase(nFft, nData) { Generate(nData); }
-        BlackmanWindow(uint16_t nFft)
-                : WindowBase(nFft, nFft) { Generate(nFft); }
+            : WindowBase(nFft, nData) { Generate(nData); }
+        explicit BlackmanWindow(uint16_t nFft)
+            : WindowBase(nFft, nFft) { Generate(nFft); }
 
     private:
         // 窓関数を生成
         virtual void Generate(uint16_t nData)
         {
-            const float PI2L = 6.283185f/(float)nData;
+            // k = 0 で値が 0 になるようにするため,計算の順番を変えている
             for (int k=0; k<nData; k++)
-                Set(k, 0.42f - 0.5f*cosf(k*PI2L) + 0.08f*cosf(k*2*PI2L));
+                Set(k, 0.42f + 0.08f*cosf(2*k*PI2L_) - 0.5f*cosf(k*PI2L_));
         }
 
         // コピー・コンストラクタおよび代入演算子の禁止のため