[SciPy-dev] RE: Remez algorithm
Chuck.Harris at sdl.usu.edu
Fri Apr 26 11:32:12 CDT 2002
> -----Original Message-----
> From: Travis Oliphant [mailto:oliphant.travis at ieee.org]
> Sent: Tuesday, April 23, 2002 9:22 PM
> To: scipy-dev at scipy.org
> Subject: Re: [SciPy-dev] RE: Remez algorithm
> Have you seen the remez algorithm in the signal module?
> How does this one compare?
OK, I wrote a bandpass filter driver for my routine and spent some time going through the sigtool version and comparing it to mine for somewhat realistic
filter specs :
taps = 90
grid_density = 16
bands = [.011,.15,.175,.239,.261,.500]
desired = [0.,1.,0.]
weights = [1e3,1.0,1e3]
Some remarks and results:
1) the sigtools version requires a density of 32 to get accurate coefficients,
I suspect an off by one bug in its peak finding routine. In any case, I have
used 32 for the sigtools version and 16 for mine to get comparable results.
2) the sigtools version is significantly faster, the times for 100 iterations :
sigtools -- 1.5 sec
mine -- 13 sec
3) the sigtools version will use less memory, in this problem :
sigtools -- about 11KiB
mine -- about 259 KiB
4) the sigtools version does not return useful ancillary data, for instance,
it's usefull to know just how good the fit was so that a routine can use
it to make tradeoffs : number of taps, out of band rejection vs inband
5) the sigtools version restricts the band edges to the range 0--.5, which
makes it difficult, sometimes impossible, to design filters with complex
coefficients, a practical thing to do sometimes with rad hard parts
running $20K a pop. Mine goes out to 1.0.
6) the sigtools interface does not expose the function hooks available in
the Parks-McClellan routine. This makes it difficult to properly design
cascaded filters, or to design filters with more interesting shapes
than the three basic types available.
7) the code for the sigtools version would be heck to modify or use as the
basis of some other routine. It's convergence criteria are not clear; it
failed to converge on some problems, but I have no idea what this meant.
8) The sigtools version is limited to filter design.
Overall, I think that the sigtools version would work well for 99% of everyday
filter design tasks, it's the remaining 1% that I wish to see covered, at least
for my own uses.
More information about the Scipy-dev