Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Superior pole/zero IIR filter design methods? (Read 6708 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Superior pole/zero IIR filter design methods?

I caught wind of an extremely interesting thread on PSW about transforms. Some EQs are believed to use a recursive filter design method that is vastly more accurate than the bilinear transformation with prewarping, particularly at high frequencies. However, I was never able to get a clear answer as to what this method exactly is, it's not in the signal processing book I have, I can't find any reference to it online, and I'm out of good ideas. Does this ring a bell to anybody else, and are there any extant references on it? Or is this proprietary?

Superior pole/zero IIR filter design methods?

Reply #1
I caught wind of an extremely interesting thread on PSW about transforms. Some EQs are believed to use a recursive filter design method that is vastly more accurate than the bilinear transformation with prewarping, particularly at high frequencies. However, I was never able to get a clear answer as to what this method exactly is, it's not in the signal processing book I have, I can't find any reference to it online, and I'm out of good ideas. Does this ring a bell to anybody else, and are there any extant references on it? Or is this proprietary?


The link did not work for me when I tried this morning (nor navigating from the PSW home page, I got some "database" error messages); I'll try again later.  EDIT OK read it now, not much to say.  Very little mention of phase response there which could matter too (and in control problems is the aspect that worries us more than minor amplitude errors).

The obvious way round this problem to me was always to upsample the data, apply a filter, and downsample again.  At the cost of a bit of processor power (and the resampling processes) that allows a better approach to the ideal by avoiding the extreme warping needed near the unit circle - the gain in doing even a factor of two upsampling can be significant (especially when combined with the rule of thumb described below).  Of course nothing works as a universal solution.

In some circumstances use of a filter with equal number of poles and zeros (and so a flat response near the nyquist frequency) can give a better match (in complex terms) at some more-important lower frequency. Depends very much on the application whether the large change near the nyquist frequency can be tolerated to gain a little better response lower down.  If you upsample as mentioned above, the extra zeros (probably zeros as most filters have more poles in most applications) can be placed out of the band of your original signal.

I've not tried this in too many audio applications (more control system applications) and it usually gives a quick fix to the problem) - a few years ago a student of mine did not find these techniques mentioned while reading through quite a large pile of textbooks; this seemed strange. (Possibly most were written when processor power was not regarded so cheaply as now.)

Sorry this does not answer your original question, but (not seeing the link) I doubt that a method like that can be all that effective, in general (having spent some time looking for such a method a few years ago).  It will be interesting to compare the processing effort needed if there is indeed an effective method.  EDIT: the description in the link is too vague, but I've not seen anything better either.

Ken

Superior pole/zero IIR filter design methods?

Reply #2
What does "more accurate" mean here?

Bilinearz maps the entire i axis of the 's' plane to the unit circle. It's exact, but you have to understand where things wind up.

So what is "more accurate".

I know of "matchz" where you try to match the poles and zeros. Can result in very strange results.

I know of "II" (impulse invariant) transforms, that try to match the impulse response.  "help stmcb" for something like that, but not quite II.

Each has their uses, and their dangers.

So what's "accurate" even mean?

Edited to add:

Looks like using something like Steiglitz-McBride or some such thing to match the sub fs/2 part of a frequency response.
-----
J. D. (jj) Johnston

Superior pole/zero IIR filter design methods?

Reply #3
Allegedly, these methods are purely analytic. No iteration is necessary to obtain a converging solution. So that immediately knocks out Steiglitz-McBride (and maybe every other adaptive IIR filter), and impulse invariance techniques, AFAIK.

See also this thread on various digital EQ implementations, which, although very nontechnical and gushing with praise, seems to imply that there are multiple implementations of the same general idea; all of them appear to be trade secrets, otherwise I figure it would have been public knowledge by now.

I don't have the numbers on me right now, but bilinear is nowhere near the analog filter going towards fs/2, even with prewarping. You've gotta add something to it to get to, say, +-0.01db or so across the entire frequency range.

Superior pole/zero IIR filter design methods?

Reply #4
This is interesting to me, mostly because I've always just used the tools in matlab, or a handful of times the bilinear transform.  I'm not sure I understand why this is a big deal though.  Why not just use matlab or similar tool to numerically compute a filter with the desired parameters?

Superior pole/zero IIR filter design methods?

Reply #5
This is interesting to me, mostly because I've always just used the tools in matlab, or a handful of times the bilinear transform.  I'm not sure I understand why this is a big deal though.  Why not just use matlab or similar tool to numerically compute a filter with the desired parameters?


If only it were so simple!  A few of us spent weeks of effort trying to do that, with MATLAB.  In principle yes, just add more poles and zeros to correct the errors; in practice numerical precision problems (in calculation and implementation) become a headache.  The best approach (without resampling) we found, was to use a (sophisticated) fitting algorithm and just give it as many poles and zeros as we were willing to work with.  Because of the minimisation algorithm used the result is not deterministic  we just stop when the filter is good enough.  We did not see a convenient (nearly ready made) solution in MATLAB.

Resampling up 2x or 4x before filtering seemed much much simpler (in our application - real time control) as the trouble is all near the unit circle.

Ken

 

Superior pole/zero IIR filter design methods?

Reply #6
I don't have the numbers on me right now, but bilinear is nowhere near the analog filter going towards fs/2, even with prewarping. You've gotta add something to it to get to, say, +-0.01db or so across the entire frequency range.


Don't forget that bilinear warps infinity in the 's' domain to 'pi' in the 'z' domain.

So if you have a filter than has infinite rejection at infinity, that gets mapped to pi.

Adding something there will do no good at all.

There are a variety of ways to design filters that do not necessarily have such responses, and most of them do in fact live inside of Matlab in the signal processing toolbox if not in the base functions.  Each has its pros and cons, and you can usually get pretty much what you want by some pretty simple work.

help yulewalk
help stmcb

for starters.

Allegedly, these methods are purely analytic. No iteration is necessary to obtain a converging solution. So that immediately knocks out Steiglitz-McBride (and maybe every other adaptive IIR filter), and impulse invariance techniques, AFAIK.


Uh, define analytic here. In what sense?

There are a host of other prewarping methods, if you look into Matti Karilanan's (sp?) work, etc. Each has its pro's and con's.

There are ways to map a 'Q' described filter analytically into the 'z' domain.

Etc, etc.

All I see in the citation is somebody who doesn't want to say what they did.
-----
J. D. (jj) Johnston