Reply by Glenn Zelniker●December 30, 20032003-12-30
Robin Clark wrote:
> Becuase of this I initially used a 9th order with doubles.
> After seeing the bad effects I converted a FORTRAN bi-quad
> polynomial breakdown to C and used that.
>
> I would really like to see a formal, or even intutative, proof of why this
> should be so though.
>
> Probably it s a precission loss in intermediate stages that does it.
For the best-ever analysis (IMO) of this topic, see Roberts &
Mullis, "Digital Signal Processing." Their explanation is a very
nice geometric one that relies on state-space analysis,
essentially deriving transfer functions from the internal noise
sources (e.g., roundoff errors) to the internal states and to the
output, and finding implementation structures that minimize the
overall noise. Not surprisingly, the common direct-II digital
filter implementation is usually the very worst one WRT to noise,
with enormous gain from noise to state and noise to output, which
jibes well with your observation. Surprisingly, small cascaded
second-order sections are not the globally optimal solution,
either. But block-optimal comes pretty close to globally optimal
in most cases, which is why second-order sections often work
well. (Although I often deal with filters for which even the
second-order sections can't be implemented as direct-form).
Glenn Zelniker
Reply by Robin Clark●December 30, 20032003-12-30
On Tue, 09 Dec 2003 21:18:42 +0000, Paavo Jumppanen wrote:
> Robin48gx <robin48gx@hotmail.com> wrote in message news:<pan.2003.12.09.20.09.17.669359.2006@hotmail.com>...
> This isn't really an answer to you original question but is there any
> particular reason why you would want to implement an IIR as a single
> 9th order filter rather than break it up into 4 biquads and one
> lead/lag stage? This would certainly be less sensitive to the roundoff
> problems you are aluding to.
>
> Regards,
>
>
> Paavo Jumppanen.
> Author of HarBal Harmonic Balancer
> http://www.har-bal.com
Hi Paavo,
Well I had made a Z plane editor, and by placing poles and zeros on it
the filter responses were plottled.
Thus complicated filters could be made and their effects
seen.
Becuase of this I initially used a 9th order with doubles.
After seeing the bad effects I converted a FORTRAN bi-quad
polynomial breakdown to C and used that.
I would really like to see a formal, or even intutative, proof of why this
should be so though.
Probably it s a precission loss in intermediate stages that does it.
cheers
Reply by Paavo Jumppanen●December 10, 20032003-12-10
Robin48gx <robin48gx@hotmail.com> wrote in message news:<pan.2003.12.09.20.09.17.669359.2006@hotmail.com>...
> I know that bits precision required for
> an IIR filter is proportional to the number of IRR
> stages. I learnt this aftermaking a 9 stage IIR using doubles
> years ago, only the 2nd and third order ones worked correctly.
>
> Anything more went to the rails (generally), due to overflows.
>
> I also used binary scaling conventions when I worked in simulation in
> assembler many years ago.
>
> I am very intersted in seeing some sort of formal proof as t why this is
> so.
>
> I understand it from an empirical view point only.....
>
> Please enlighten me !
This isn't really an answer to you original question but is there any
particular reason why you would want to implement an IIR as a single
9th order filter rather than break it up into 4 biquads and one
lead/lag stage? This would certainly be less sensitive to the roundoff
problems you are aluding to.
Regards,
Paavo Jumppanen.
Author of HarBal Harmonic Balancer
http://www.har-bal.com
Reply by Robin48gx●December 9, 20032003-12-09
I know that bits precision required for
an IIR filter is proportional to the number of IRR
stages. I learnt this aftermaking a 9 stage IIR using doubles
years ago, only the 2nd and third order ones worked correctly.
Anything more went to the rails (generally), due to overflows.
I also used binary scaling conventions when I worked in simulation in
assembler many years ago.
I am very intersted in seeing some sort of formal proof as t why this is
so.
I understand it from an empirical view point only.....
Please enlighten me !