The goal is to design M analysis and synthesis FIR filters so that the analysis filters satisfy some frequency specifications and the filter bank(almost) meets the perfect reconstruction (PR) conditions. Both goals are achieved by minimizing the following performance index:
J=w1*(PR error)+w2*(Frequency Specification error)
where w1 and w2 are optional weights
The algorithm can be used to design both uniform (critically/over sampled) and non-uniform (with compatible as well as incompatible sampling set) filter banks. The method is based on the following report:
Moazzen, I. , Agathoklis, P., "A General Approach for Filter Bank Design Using Optimization", Technical Report, 2014.
This report can be downloaded from:
In order to learn how you can use this toolbox, please copy all the m-files included in the "Filter Bank Design" folder into your current Matlab directory and type "help Filter_Bank_Design".
To find other Matlab functions about filter design, please visit: https://www.ece.uvic.ca/~imanmoaz/homepage/html/products.html
Thanks a lot Abdullah for reporting this issue. Based on your suggestion, I just updated the function to solve this compatibility problem. Thanks again. You are awesome!
Great work Iman
However it needs an update to work on 2016a and further. You can't declare global after assignment anymore. In "Filter_Bank_Design"
add the following after line 102
N = N_temp;
cost_function_weight = cost_function_weight_temp;
and dont forget to change the function line inputs N and cost_function_weight to N_temp and cost_function_weight_temp.
The code is helpful for me to learn the design of filter bank.And the paper,mentioned in the code, comprehensively discusses the designing of filter bank!Thanks!
solving compatibility issue with MATLAB 2016a. Special Thanks to Abdullah Alshammary.