sb_peak.cpp

来自「Digital filter designer s handbook C++ c」· C++ 代码 · 共 55 行

CPP
55
字号
//    
//   file = sb_peak.cpp
//     

#include "fs_spec.h"
#include <iostream.h>

double FindStopbandPeak(  FreqSampFilterSpec *filter,
                          int numPts,
                          double H[])
{
double peak;
int n, nBeg, nEnd, indexOfPeak;

cout << "doing case " << filter->GetBandConfig() << endl;
switch (filter->GetBandConfig())
  {
   case 1:       /* lowpass */
     nBeg = 2*numPts*(filter->GetN2())/(filter->GetNumTaps());
     nEnd = numPts-1;
    break;
  case 2:       /* highpass */
  case 3:       /* bandpass */
    nBeg = 0;
    nEnd = 2*numPts*filter->GetN1()/filter->GetNumTaps();
    break;
  case 4:       /* bandstop */
    nBeg = 2*numPts*filter->GetN2()/filter->GetNumTaps();
    nEnd = 2*numPts*filter->GetN3()/filter->GetNumTaps();
    break;
  }
cout << "nBeg = " << nBeg << endl;
cout << "nEnd = " << nEnd << endl;

peak = -9999.0;
for(n=nBeg; n<nEnd; n++) {
  if(H[n]>peak) {
    peak=H[n];
    indexOfPeak = n;
    }
  }
if(filter->GetBandConfig() == 4) {   /* bandpass has second stopband */
  nBeg = 2*numPts*filter->GetN4()/filter->GetNumTaps();
  nEnd = numPts;
  for(n=nBeg; n<nEnd; n++) {
    if(H[n]>peak) {
      peak=H[n];
      indexOfPeak = n;
      }
    }
  }
return(peak);
}

⌨️ 快捷键说明

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