![]() |
RTXI 1.3
|
00001 // 00002 // File = remezalg.h 00003 // 00004 #ifndef _REMEZALG_H_ 00005 #define _REMEZALG_H_ 00006 00007 #include "fir_dsgn.h" 00008 00009 class RemezAlgorithm 00010 { 00011 public: 00012 00013 // constructor 00014 RemezAlgorithm( std::istream& uin, 00015 std::ostream& uout, 00016 int filter_length, 00017 double passband_edge_freq, 00018 double stopband_edge_freq, 00019 double ripple_ratio, 00020 FirFilterDesign **fir_filter); 00021 void SetupGrid( void ); 00022 00023 double GetFrequency( int grid_index); 00024 00025 void RemezError( void); 00026 00027 void RemezSearch(void); 00028 00029 int RemezStop(void); 00030 00031 int RemezStop2(void); 00032 00033 double ComputeRemezAmplitudeResponse( int init_flag, 00034 double contin_freq); 00035 void RemezFinish(double *filter_coeffs); 00036 00037 00038 private: 00039 00040 int Num_PB_Freqs; 00041 int Num_SB_Freqs; 00042 int Num_Grid_Pts_PB; 00043 int Num_Grid_pts_SB; 00044 int Filter_Length; 00045 double PB_Increment; 00046 double SB_Increment; 00047 int Grid_Density; 00048 int Num_Approx_Funcs; 00049 double PB_Edge_Freq; 00050 double SB_Edge_Freq; 00051 int* Ext_Freq; 00052 int* Old_Ext_Freq; 00053 double* Error; 00054 int Max_Grid_Indx; 00055 double WeightFunction(double freq); 00056 double DesiredResponse(double freq); 00057 double Abs_Delta; 00058 double Ripple_Ratio; 00059 double *X_; 00060 double *Beta_; 00061 double *Gamma_; 00062 00063 }; 00064 #endif