⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen_win.cpp

📁 Digital filter designer s handbook C++ code source
💻 CPP
字号:
//
//  File = gen_win.cpp
//

#include <math.h>
#include "gen_win.h"
#include "misdefs.h"

GenericWindow::GenericWindow( void )
{
 Length = 0;
 Half_Length = 0;
 Half_Lag_Win = NULL;
 Data_Win = NULL;
}
//----------------------------------------
GenericWindow::GenericWindow( int length )
{
 Initialize(length);
}
//----------------------------------------
void GenericWindow::Initialize( int length )
{
 Length = length;
 if(length%2)
   { Half_Length = (length+1)/2; }
 else
   { Half_Length = length/2; }
   
 Half_Lag_Win = new double[Half_Length];
 Data_Win = NULL;
 
 return;
}

double GenericWindow::GetDataWinCoeff( int samp_indx)
{
 int middle;
 
 if(Length%2)
   {
    middle = (Length-1)/2;
    if(samp_indx < middle)
      { return(Half_Lag_Win[middle-samp_indx]); }
    else
      { return( Half_Lag_Win[samp_indx-middle]); }
   }
 else
   {
    middle = Length/2;
    if(samp_indx < middle)
      { return(Half_Lag_Win[middle-1-samp_indx]); }
    else
      { return(Half_Lag_Win[samp_indx-middle]); }
   }
}

void GenericWindow::DumpHalfLagWindow( ofstream *output_stream)
{
 for(int n=0; n<Half_Length; n++)
   {
    (*output_stream) << n << ", " << Half_Lag_Win[n] << endl;
   }
 return;
}  

double* GenericWindow::GetDataWindow( void )
{
 if( Data_Win == NULL )
   {
    Data_Win = new double[Length];
    for(int n=0; n<Length; n++)
     {
      Data_Win[n] = GetDataWinCoeff(n);
     }
   }
 return(Data_Win);
}
  
double* GenericWindow::GetHalfLagWindow( void )
{
 return(Half_Lag_Win);
}
  
double* GenericWindow::GetLagWindow( void )
{
 return(Lag_Win);
}

int GenericWindow::GetNumTaps( void )
{
  return(Length);
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -