It’s been asked many times, so it’s worth an article explaining the conventions used on this site for transfer functions, and why they may differ from what you see elsewhere.
People run into this most often with biquads: I use a (a0, a1, a2) in the numerator (defining zeros), and b in the denominator (defining poles). Many references, including wikipedia, use the opposite convention. Why am I so contrary?
OK, I go back a few years, back when the only way to find out about digital signal processing was to buy a college text book and try to make sense of it. In the beginning, there was no convention (I’m not sure there is now, other than de facto—please let me know if some technical society or other has put down the word). When I first went to write for the public, I took a survey of my book shelf. Most had a on top. And that choice made sense to me—a then b, from top to bottom, and also left to right for the direct form I structure. Finally, it makes sense that FIRs would have only a coefficients. Having only b coefficients seems odd, if you were to specialize the general transfer function.
My only guess for the other way preference, initially at least, is that when using the canonical (minimum number of delay elements) director form II, the result would be a–b left to right.
So, I wrote a number of articles over the years using that convention. And over the years it seems that b-on-top has become dominant. (I recall seeing a-on-top on another major internet resource recently, and I see that one site even uses c and d—I assume to avoid the conflict altogether.) Free time is not something I have a lot of, so I don’t intend to edit all my articles, diagrams, and widgets to change the convention. I’m not saying it will never happen, but not for now.
It’s easy enough to notice which convention is used if you’re aware that there is no 100% agreement. Biquads (and higher order IIRs) are typically normalized to the output, making b0 (in my case) unity, so there is no coefficient needed. If you see a set of a and b coefficients, and a0 is missing and b0 is not, then the order is swapped relative to mine.
Finally, there is one other place that you can get caught with filter coefficients. When deriving a difference equation (y(n) = a0x(n) + a1x(n-1) + a2x(n-2) – b1y(n-1) – b2y(n-2)), sometimes people roll the minus signs for the feedback part into the respective coefficients. This damages the mathematical purity of it all a tad, but makes sense in a computer implementation. I don’t merge the minus signs—and fortunately, I don’t think most internet sources do either.
For the record, I’ll consult my bookshelf and see if I can come up with that original survey I mentioned earlier:
a on top
Theory and Application of Digital Signal Processing, Rabiner and Gold, 1975
Principles of Digital Audio—Second Edition, Pohlmann, 1989*
Advanced Digital Audio, Pohlmann, 1991
Digital Signal Processing—A Practical Approach, Ifeachor and Jervis, 1993
Digital Audio Signal Processing, Zölzer, 1997
Digital Signal Processing—An Anthology: Chapter 2, An Introduction to Digital Filter Theory, Julius O. Smith, 1983
* The topic doesn’t appear in the first edition. Also, although the text uses a for the top (forward path of the difference equations, actually), a diagram of the direct form II structure shows the opposite. Since Pohlmann is consistent, otherwise, it seems the diagram was taken from somewhere else.
b on top
I thought I had a few—can’t find any at the moment. Perhaps TI and Motorola application notes?
N on top, D on bottom (Numerator and Denominator!)
Multirate Digital Signal Processing, Rochiere and Rabiner, 1983
Other (these don’t use indexed coefficients)
Digital signal Analysis, Sterns, 1975
Musical Applications of Microprocessors, Chamberlin, 1980
Final notes
Again, the textbook survey is to show why I made the choice then, not to support why it should be that way now. Be aware that you can’t assume that a given author is consistent over time. Rabiner’s books use different conventions, with different co-authors, as noted. Julius O. Smith’s detailed 1983 article has a on top, while his vast web resources use b on top. In DAFX: Digital Audio Effects (like Anthology above, a collection from multiple authors), Zölzer has b on top. It’s always a good idea to pay attention—there is nothing magical about the coefficient naming, it’s simply a style consideration.
If you look at Adaptive Filter Theory (reference in digital filter books), you would get b on top, a on bottom.
You also get b on top and a on bottom in
“Discrete-Time Signal Processing” by Oppenheim and Schafer
“Foundations of Signal Processing” by Vetterli, Kovacevic and Goyal.
(It might depend on the area in which the books are used: the ones you cite seem to come from the audio/speech processing community, right?)
The ones that don’t say “digital audio” are very general. Anyway, there are many old texts that have b on top (I thought I had a few—maybe in chapters I didn’t look at).
“Circuits and Systems – A Modern Approach” by Papoulis (1980) has b on top.
One source of the ‘b’ for numerator and ‘a’ for denominator convention is the state-space linear systems convention of describing a multi-input multi-output system by an appropriately dimensioned set of matrices {A,B,C,D} and for a single-input single-output version these are readily defined in terms of {numerator b} and {denominator a} of a transfer function or equivalent difference equation model.
> Julius O. Smith’s detailed 1983 article has a on top, while his vast web resources use b on top.
Why not ask him why? He’s pretty approachable. (Disclaimer: I was his housemate for several years, along with a bunch of others who went on to varying degrees of fame an notoriety…)
I don’t really have a question to ask. The point was there is no convention, so people need to pay attention on which way the coefficients are spelled, as well as whether any subtractions are rolled in with the signs. While I’d wondered whether there might be a coalescing towards b on top in the internet age, I noticed recently that Will Pirkle, in his books and on the web, uses the convention I use. Either way, I’m not likely to change, which would require too much editing of past articles. 🙂