From: Grant Griffin on
I'm finally about ready to release an IIR filter design program called -
you guessed it - ScopeIIR (TM).

It currently supports the basic design types of Butterworth, Chebyshev,
and Elliptic. I'm trying to finalize the default and maximum IIR filter
order that the program will support. To help me do that, please tell me
about your experiences with IIR filter order, assuming the above types
and implementation via biquads, where applicable:

- Minimum order: (I assume 1)
- The typical order you use for most problems
- The maximum order you've ever used in a real system
- The maximum order that you consider feasible to design using 8-byte
IEEE floating point ("double")
- The maximum order that you consider feasible to implement in various
numeric formats. I'm particularly interested in 8-byte and 4-byte IEEE,
and any fixed-point formats you've used (please specify).

thanks,

Grant
--
_____________________________________________________________________

Grant R. Griffin
Publisher of dspGuru http://www.dspguru.com
Iowegian International Corporation http://www.iowegian.com
See http://www.iowegian.com/img/contact.gif for e-mail address
From: steveu on
>I'm finally about ready to release an IIR filter design program called -
>you guessed it - ScopeIIR (TM).
>
>It currently supports the basic design types of Butterworth, Chebyshev,
>and Elliptic. I'm trying to finalize the default and maximum IIR filter
>order that the program will support. To help me do that, please tell me
>about your experiences with IIR filter order, assuming the above types
>and implementation via biquads, where applicable:
>
>- Minimum order: (I assume 1)
>- The typical order you use for most problems
>- The maximum order you've ever used in a real system
>- The maximum order that you consider feasible to design using 8-byte
>IEEE floating point ("double")
>- The maximum order that you consider feasible to implement in various
>numeric formats. I'm particularly interested in 8-byte and 4-byte IEEE,
>and any fixed-point formats you've used (please specify).

That seems a slightly odd set of questions. The main driver for word length
is not the order of the IIR filter, but just how low in the band the poles
and zeros sit.

Steve

From: Grant Griffin on
steveu wrote:
>> I'm finally about ready to release an IIR filter design program called -
>> you guessed it - ScopeIIR (TM).
>>
>> It currently supports the basic design types of Butterworth, Chebyshev,
>> and Elliptic. I'm trying to finalize the default and maximum IIR filter
>> order that the program will support. To help me do that, please tell me
>> about your experiences with IIR filter order, assuming the above types
>> and implementation via biquads, where applicable:
>>
>> - Minimum order: (I assume 1)
>> - The typical order you use for most problems
>> - The maximum order you've ever used in a real system
>> - The maximum order that you consider feasible to design using 8-byte
>> IEEE floating point ("double")
>> - The maximum order that you consider feasible to implement in various
>> numeric formats. I'm particularly interested in 8-byte and 4-byte IEEE,
>> and any fixed-point formats you've used (please specify).
>
> That seems a slightly odd set of questions. The main driver for word length
> is not the order of the IIR filter, but just how low in the band the poles
> and zeros sit.
>
> Steve
>

Thanks for your input, Steve, but I guess I'm looking for something a
little more concrete. Please note that all of these questions ask for
experiences and opinions rather that an exact mathematical answer. For
example, the question of what is the maximum order that you've ever used
is answerable: what _is_ the maximum order that you've ever used? (I
never thought comp.dsp would be short of unsubstantiated experiences and
opinions. ;-)

Think of this from the user's and programmer's point of view. The user
would like to be successful almost all of the time when working within
the specified limitations. So, the programmer would like to define some
sort of simple limitations which the user will be successful within. In
that vein, ScopeFIR's Parks-McClellan design is explicitly limited to
16384 taps even though there is no intrinsic limitation on that
internally - it's just that PM designs often fail with a larger number
of taps.

Of course, the possibility exists that the user could torture-test
ScopeIIR with an extreme design (either accidentally or on purpose) and
then the design and/or implementation process would fail even within the
specified limits on IIR filter order.

So, I guess I'm looking for parameters that cover the common experience.
For example, the question of what order you have typically used is
needed to fill in a default value of order - which the user can change,
of course. So what might such a default value be? I'm currently using 4.

thanks,

Grant
--
_____________________________________________________________________

Grant R. Griffin
Publisher of dspGuru http://www.dspguru.com
Iowegian International Corporation http://www.iowegian.com
See http://www.iowegian.com/img/contact.gif for e-mail address
From: Rune Allnor on
On 26 Feb, 14:23, Grant Griffin <nob...(a)example.com> wrote:

> Think of this from the user's and programmer's point of view.  The user
> would like to be successful almost all of the time when working within
> the specified limitations.  So, the programmer would like to define some
> sort of simple limitations which the user will be successful within.  In
> that vein, ScopeFIR's Parks-McClellan design is explicitly limited to
> 16384 taps even though there is no intrinsic limitation on that
> internally - it's just that PM designs often fail with a larger number
> of taps.

So what?

There could be any number of reasons why any algorithm
might fail. A lot of them have to do with the accuracy
of the binary represnetation of numbers, while others
might have to do with sensitive and/or oversimplified
algorithms and what not.

The statement "PM designs fail for orders larger than N"
might rely as much on such implementation-dependent
factors, as on any intrinsic property of the algorithm
itself.

Unless you have tested a number of designs and measured
statistics to support your claim, I'd suggest you leave
the question open. Instead, implement tests to see if the
algorithm converges and / or the design meets the spec.
That way you can inform the user about what *actually*
happens, without imposing ad hoc restrictions.

It's not your business, as programmer, to prevent somebody
who wants to implement a 670 order Elliptic filter in 8-bit
fixed-point arithemetics from doing so. Just include the
tests and diagnostics that reports back to the user what he
*actually* gets. And let the documentation hint at why these
things happen.

Rune
From: Grant Griffin on
Rune Allnor wrote:
> On 26 Feb, 14:23, Grant Griffin <nob...(a)example.com> wrote:
>
>> Think of this from the user's and programmer's point of view. The user
>> would like to be successful almost all of the time when working within
>> the specified limitations. So, the programmer would like to define some
>> sort of simple limitations which the user will be successful within. In
>> that vein, ScopeFIR's Parks-McClellan design is explicitly limited to
>> 16384 taps even though there is no intrinsic limitation on that
>> internally - it's just that PM designs often fail with a larger number
>> of taps.
>
> So what?
>
> There could be any number of reasons why any algorithm
> might fail. A lot of them have to do with the accuracy
> of the binary represnetation of numbers, while others
> might have to do with sensitive and/or oversimplified
> algorithms and what not.
>
> The statement "PM designs fail for orders larger than N"
> might rely as much on such implementation-dependent
> factors, as on any intrinsic property of the algorithm
> itself.

Hi Rune,

It's good to hear from you. I guess I should be more specific. There
is an unstated premise in my point that I am using 8-byte IEEE
arithmetic, since ScopeFIR is implemented on Windows using a Microsoft
compiler that provides that as the most precise floating-point data
type. It was not intended as a universal statement for those (few) of
you who have more precise numeric representations to work with.

>
> Unless you have tested a number of designs and measured
> statistics to support your claim, I'd suggest you leave
> the question open.

If it helps, all of this is based on my measurements on the
aforementioned system. And that's after I tweaked the Parks-McClellan
algorithm to work on a larger number of taps - the original
implementation fails at a much smaller number of taps.

> Instead, implement tests to see if the
> algorithm converges and / or the design meets the spec.
> That way you can inform the user about what *actually*
> happens, without imposing ad hoc restrictions.

I'm not sure that you're thinking of this from the typical user's point
of view. However, that's part of my job. Luckily, I'm fairly
pedestrian as far as my DSP design work goes so that isn't too hard for me.

>
> It's not your business, as programmer, to prevent somebody
> who wants to implement a 670 order Elliptic filter in 8-bit
> fixed-point arithemetics from doing so. Just include the
> tests and diagnostics that reports back to the user what he
> *actually* gets. And let the documentation hint at why these
> things happen.

Are you suggesting that users read documentation? ;-)

I guess it depends on your intended user. My products are intended to
be easy for the novice to use while being highly useful to the seasoned
pro, on a daily basis. Obviously, that's a bit of a balancing act. So,
sometimes we have to save the user from himself, though sometimes not.
For example, I personally feel that any user who creates a FIR with
16384 taps should rethink their design - I rarely use more than 256 or
512 before going to a multirate design. However, there might be cases
where a seasoned pro has reasons to use many thousand. So I let the
novice do that, too.

My theory has always been that users prefer something that works
reliably to something that doesn't, even if the latter has more
features. In this case, the feature is the maximum number of taps.

Imagine that Word would let you open a document with an unlimited number
of pages, but would usually fail if that number of pages was greater
than 16384. So the Word folks might set a limit of 16384 pages. The
causual user would never have a document with 16384 pages so he would
never experience this limit. The seasoned professional who tried to
open a document with more than 16384 pages and received a message about
the limitation probably would understand that he should break his
documents into a set of smaller documents - like the Encyclopedia
Britannica folks do. ;-)

>
> Rune

thanks, Rune,

Grant
--
_____________________________________________________________________

Grant R. Griffin
Publisher of dspGuru http://www.dspguru.com
Iowegian International Corporation http://www.iowegian.com
See http://www.iowegian.com/img/contact.gif for e-mail address