Changeset 3431

Show
Ignore:
Timestamp:
04/18/07 14:49:12 (6 years ago)
Author:
jgaeddert
Message:

Normalizing filter bank coefficients

Location:
SigProc/trunk/SigProc
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • SigProc/trunk/SigProc/autotest_sources/FIRPolyphaseFilterBank_testsuite.h

    r3381 r3431  
    4242         
    4343        for (unsigned int i=0; i<12; i++) { 
    44             TS_ASSERT_DELTA( H[0 +i], f0[i], 0.00001f ); 
    45             TS_ASSERT_DELTA( H[12+i], f1[i], 0.00001f ); 
    46             TS_ASSERT_DELTA( H[24+i], f2[i], 0.00001f ); 
    47             TS_ASSERT_DELTA( H[36+i], f3[i], 0.00001f ); 
     44            // Need to multiply by 'k' to compensate for filterbank scaling 
     45            TS_ASSERT_DELTA( H[0 +i]*k, f0[i], 0.00001f ); 
     46            TS_ASSERT_DELTA( H[12+i]*k, f1[i], 0.00001f ); 
     47            TS_ASSERT_DELTA( H[24+i]*k, f2[i], 0.00001f ); 
     48            TS_ASSERT_DELTA( H[36+i]*k, f3[i], 0.00001f ); 
    4849        } 
    4950    } 
     
    7778         
    7879        for (unsigned int i=0; i<12; i++) { 
    79             TS_ASSERT_DELTA( H[0 +i], f0[i], 0.00001f ); 
    80             TS_ASSERT_DELTA( H[12+i], f1[i], 0.00001f ); 
    81             TS_ASSERT_DELTA( H[24+i], f2[i], 0.00001f ); 
    82             TS_ASSERT_DELTA( H[36+i], f3[i], 0.00001f ); 
     80            // Need to multiply by 'k' to compensate for filterbank scaling 
     81            TS_ASSERT_DELTA( H[0 +i]*k, f0[i], 0.00001f ); 
     82            TS_ASSERT_DELTA( H[12+i]*k, f1[i], 0.00001f ); 
     83            TS_ASSERT_DELTA( H[24+i]*k, f2[i], 0.00001f ); 
     84            TS_ASSERT_DELTA( H[36+i]*k, f3[i], 0.00001f ); 
    8385        } 
    8486 
  • SigProc/trunk/SigProc/filters.cpp

    r3382 r3431  
    280280 
    281281    // Ensure yf is within the scope of short int 
    282     if ( yf < SHRT_MIN ) 
     282    if ( yf < SHRT_MIN ) { 
    283283        y = SHRT_MIN; 
    284     else if ( yf > SHRT_MAX ) 
     284    } else if ( yf > SHRT_MAX ) { 
    285285        y = SHRT_MAX; 
    286     else 
     286    } else { 
    287287        y = (short) yf; 
     288    } 
    288289 
    289290} 
     
    360361    // create over-sampled pulse 
    361362    SigProc::DesignRRCFilter(Npfb*k, m, beta, H, h_len); 
     363 
     364    // Apply scaling factor to filter coefficients 
     365    float h_scale = float(k); 
     366    for (unsigned int i=0; i<h_len; i++) 
     367        H[i] /= h_scale; 
    362368 
    363369    //