00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "ERB_Space_Gen.hxx"
00027 #include "CLAM_Math.hxx"
00028
00029 namespace CLAM
00030 {
00031
00032 ERB_SpaceGen::ERB_SpaceGen()
00033 {
00034 Configure(ERB_SpaceGenConfig());
00035 }
00036
00037 ERB_SpaceGen::ERB_SpaceGen(ERB_SpaceGenConfig& c)
00038 {
00039 Configure(c);
00040 }
00041
00042
00043 ERB_SpaceGen::~ERB_SpaceGen() {}
00044
00045 bool ERB_SpaceGen::ConcreteConfigure(const ProcessingConfig& c)
00046 {
00047 CopyAsConcreteConfig( mConfig, c );
00048
00049 mNumFilter=mConfig.GetNumFilter();
00050 mLowFreq=(TData)mConfig.GetLowFreq();
00051 mHighFreq=(TData)mConfig.GetHighFreq();
00052
00053 return true;
00054 }
00055
00056 bool ERB_SpaceGen::Do(Array<double>& mERBFreqs)
00057 {
00058 int i;
00059
00060
00061
00062 double earQ = 9.26449;
00063 double minBW = 24.7;
00064
00065
00066
00067
00068 for( i=0; i<mNumFilter; i++)
00069 {
00070 mERBFreqs[i]=-(earQ*minBW)
00071 + std::exp((i+1)*(-std::log(mHighFreq + earQ*minBW) + std::log(mLowFreq + earQ*minBW))/mNumFilter) * (mHighFreq + earQ*minBW);
00072 }
00073
00074 return true;
00075 }
00076
00077 }
00078