FYI: Wavelet Design
2005-05-17 19:36:02
Hi there ! I just wanted to share some results I got in the quest of designing orthogonal wavelets for audio coding. If you just google for wavelets you usually find some low-order wavelet filters with crappy frequency responses. These may work for coding of images but for audio they cannot be considered appropriate. That'a why I tinkered around with some formulas, matlab and an old FIR design tool I wrote some years ago. I focussed on 2-channel filterbanks and found a simple but effective way of designing those filters. I just created an equiripple symmetric half band lowpass filter (of the form [... * 0 * 0 * 0.5 * 0 * 0 * ...]) with "double-zeros" on the stopband part of the unit-circle) and factored it into two filters while trying to minimise the group delay range of those two filters. The two new filters are then valid analysis and synthesis lowpass filters for an orthogonal 2 channel filterbank. Here's an example: type : orthogonal (non-linear phase) order : 26 stopband of lowpass begins at 2/3*pi stopband rejection : 65 dB group delay range : 1.8 (in samples) lowpass filter coefficients: 3.041838032672176e-003 4.567851925971925e-004 -1.098218439091454e-002 -3.662646591212077e-003 2.590409895169532e-002 2.238250550392113e-002 -8.271594459588184e-003 1.234127790542097e-002 2.359303879336364e-002 -8.263816787161239e-002 -8.834730610626840e-002 2.860866511973148e-001 7.098094669141314e-001 5.883907679001247e-001 6.818727579056634e-002 -1.668785609869112e-001 2.641981212615146e-003 1.103597635527988e-001 -2.055388939118986e-003 -7.573586789176684e-002 -1.913078112714606e-002 2.245601751887703e-002 3.112779340745783e-003 -9.091748528872354e-003 -3.964428262059837e-004 2.640004285867931e-003 As usual, to get the corresponsing highpass filter coeffs, reverse the order and negate every 2nd coeff. The design method takes the desired order and stopband start frequency and gives the best possible equiripple filters for that kind of setup. It's currently not 100% matlab code and still partly done by hand - so, please don't request code for now - but you may suggest some input parameters (order and stopband start frequency ... or stopband start frequency and rjection). I could post the result). have fun, Sebi