Hello, Can somebody indicate some Matlab code, where IIR filters do get synthezised based on a target magnitude curve and optionally a target phase curve also ? There are interesting publications, like from : - Baicher - Juang-Kong - Kakaboga-Cetinkaya I'd like experiment on that idea using Matlab. Especially comparing the results with the Yule-Walker method and with the FDLS-Bechin method. Any clue welcome. Thanks

# IIR filter design, Matlab and a genetic algorithm

Started by ●March 19, 2008

Reply by ●March 19, 20082008-03-19

On Mar 19, 2:02 am, "steph_tsf" <stephanecnocka...@hotmail.com> wrote:> Hello, > > Can somebody indicate some Matlab code, where IIR filters do get > synthezised based on a target magnitude curve and optionally a target > phase curve also ? > > There are interesting publications, like from : > > - Baicher > - Juang-Kong > - Kakaboga-Cetinkaya > > I'd like experiment on that idea using Matlab. Especially comparing the > results with the Yule-Walker method and with the FDLS-Bechin method. > Any clue welcome.Also try the search terms "differential evolution", a genetic algorithm. There's Matlab code for it on a berkeley.edu web site. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M

Reply by ●March 19, 20082008-03-19

Thanks for pointing the DE method ! found here indeed : http://www.icsi.berkeley.edu/~storn/code.html and the Digital Filter Design Software based on the DE method: http://www.icsi.berkeley.edu/~storn/fiwiz.html Steph

Reply by ●August 1, 20122012-08-01

hello i need some matlab or c or c++ cod for IIR filter design with DE algoritm, some one can help me. tank you

Reply by ●August 4, 20122012-08-04

Hello, I tried the DE method on a 16-tap FIR design problem, and got pretty good results. - The 'technical report' explains a crossover algorithm near Fig. 2 (link on the DE page above): The number of updated parameters is effectively drawn from a geometrical distribution. - The Matlab code implements this as option, and uses a binominal distribution instead for the number of changed parameters. - So far so good, but the default settings are set in such a way that ALL parameters are updated. What would be the motivation behind these methods? I can try and compare, but maybe there is a good reason to use one or the other. BTW, I'm using 'strategy 2' (local-to-best), updating all parameters for now. Population size 100 and weight 0.85 seem to work well. -markus

Reply by ●August 4, 20122012-08-04

found the answer under the 'practical advice' section: - change few parameters if they aren't tightly coupled (tends to search along the axes) - change more parameters if they are highly inter-dependent. The latter is probably the case for digital filters, as optimizing tap-by-tap makes no sense at all.

Reply by ●August 6, 20122012-08-06

preliminary conclusion from some weekend hacking, if anybody is interested: - DE finds global optimum regularly (maybe 9 times out of 10) for a 16 tap peak-limited FIR within ~1 min of CPU time - results for a 32-tap filter didn't look to promising, but were meaningful (local optimum) - strategy 2 "local-to-best" (see web page and example code) converges faster than strategy 1 "random" but is more greedy and thus gets easier stuck in a local optimum. - Intuition tells me that the problem gets substantially harder for the DE algorithm with an increasing number of parameters, and results seem to confirm this.

Reply by ●August 6, 20122012-08-06

>On Mar 19, 2:02 am, "steph_tsf" <stephanecnocka...@hotmail.com> wrote: >> Hello, >> >> Can somebody indicate some Matlab code, where IIR filters do get >> synthezised based on a target magnitude curve and optionally a target >> phase curve also ? >> >> There are interesting publications, like from : >> >> - Baicher >> - Juang-Kong >> - Kakaboga-Cetinkaya >> >> I'd like experiment on that idea using Matlab. Especially comparing the >> results with the Yule-Walker method and with the FDLS-Bechin method. >> Any clue welcome. > >Also try the search terms "differential evolution", >a genetic algorithm. There's Matlab code for it on a >berkeley.edu web site. > >There is a very nice 'generic' Matlab toolbox version of the DE algorithm on FileExchange. I've used it from time to time and always served me well. It's trivial to write your own objective function with cost function, so I find it more flexible than the fiwiz software. It supports quantizing at the same time, which is nice. http://www.mathworks.com/matlabcentral/fileexchange/18593-differential-evolution%20 Dave

Reply by ●August 6, 20122012-08-06

interesting, thanks. I might just plug in my existing objective function and give it a go. How many parameters can it handle, and still give "good" results? A generic solver would be very convenient if it can optimize a cascade of filters. But it needs to be better than designing each stage on its own with a conventional method and then just running fminsearch to optimize locally. But I think what I'm asking is impossible, as the number of parameters gets too large.

Reply by ●August 8, 20122012-08-08

>interesting, thanks. >I might just plug in my existing objective function and give it a go. > >How many parameters can it handle, and still give "good" results? > >A generic solver would be very convenient if it can optimize a cascade of >filters. >But it needs to be better than designing each stage on its own with a >conventional method and then just running fminsearch to optimize locally. >But I think what I'm asking is impossible, as the number of parametersgets>too large. >I have used it for exactly that (quantization for a cascade of multirate filters), but the number of coefficients was low (<8) since it was based on the bireciprocal lattice (wave filters). Honestly a long exhaustive search around the ideal solution worked better. However I thought it was extremely impressive that even given a random starting point, DE would find a near optimal solution in about 10 minutes.