gen_win.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:2k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = gen_win.cpp
  3. //
  4. #include <math.h>
  5. //#include <stdio.h>
  6. //#include <iomanip>
  7. #include "gen_win.h"
  8. #include "misdefs.h"
  9. //======================================================
  10. GenericWindow::GenericWindow( int length )
  11. {
  12.    Initialize(length);
  13. }
  14. //=====================================================
  15. void GenericWindow::Initialize( int length )
  16. {
  17.    Length = length;
  18.    if(length%2){ 
  19.       Half_Length = (length+1)/2; 
  20.    }
  21.    else{ 
  22.       Half_Length = length/2; 
  23.    }
  24.    Half_Lag_Win = new double[Half_Length];
  25.    Data_Win = NULL;
  26.    return;
  27. }
  28. //======================================================
  29. double GenericWindow::GetDataWinCoeff( int samp_indx)
  30. {
  31.    int middle;
  32.    if(Length%2){
  33.       middle = (Length-1)/2;
  34.       if(samp_indx < middle){ 
  35.          return(Half_Lag_Win[middle-samp_indx]); 
  36.       }
  37.       else{ 
  38.          return( Half_Lag_Win[samp_indx-middle]); 
  39.       }
  40.    }
  41.    else{
  42.       middle = Length/2;
  43.       if(samp_indx < middle){ 
  44.          return(Half_Lag_Win[middle-1-samp_indx]); 
  45.       }
  46.       else{ 
  47.          return(Half_Lag_Win[samp_indx-middle]); 
  48.       }
  49.    }
  50. }
  51. //======================================================
  52. void GenericWindow::NormalizeWindow( void )
  53. {
  54.    double peak;
  55.    peak = Half_Lag_Win[0];
  56.    for(int n=0; n<Half_Length; n++){
  57.       Half_Lag_Win[n] /= peak;
  58.    }
  59.    return;
  60. }  
  61. //======================================================
  62. double* GenericWindow::GetDataWindow( void )
  63. {
  64.    if( Data_Win == NULL ){
  65.       Data_Win = new double[Length];
  66.       for(int n=0; n<Length; n++){
  67.          Data_Win[n] = GetDataWinCoeff(n);
  68.       }
  69.    }
  70.    return(Data_Win);
  71. }
  72. //======================================================  
  73. double* GenericWindow::GetHalfLagWindow( void )
  74. {
  75.    return(Half_Lag_Win);
  76. }
  77. //======================================================
  78. int GenericWindow::GetNumTaps( void )
  79. {
  80.    return(Length);
  81. }
  82.