Is there a systematic method for converting an even length FIR filter to odd length? I'm currently implementing a discrete wavelet transform (DWT) as a cascaded QMF filter bank (pictured below). I've put together a convolution function that attempts to filter an input signal in a non-causal fashion. Essentially, the convolution mask is center around the output which means the output is a function of previous, current, and future outputs. I'm doing this to achieve zero-phase filtering.
However, I've noticed that filters associated with wavelets tend to be even length which make it impossible to center the convolution mask around the output. The only solution to this would be to convert the even length filter to an odd length filter (probably increase length by 1).
Is there a systematic method for changing the filter order from even to odd using MATLAB?
Standard even-length filters are somewhat inherent to 2-band real FIR orthogonal wavelets. And they are most often non symmetric.
If you really want odd length, or at least central symmetry, most probably you will have to relieve one of the above assumptions. The simplest could be to use some biorthogonal wavelets. The classical JPEG2000 9/7 pair is probably close enough to orthogonality for most purposes. Other filters can be tabulated, see for instance: Wavelet Biorthogonal 2.8 (bior2.8).
Then, there is a possibly to have complex filters, but honestly I am not familiar anymore with the literature.
You can also use $(2M+1)$-wavelet filter-banks, to quit the dyadic case. There are a couple of $3$-band wavelet designs with odd-length filters.