From: Rob Gaddi on
On 6/10/2010 2:37 AM, Rune Allnor wrote:
> On 8 Jun, 18:35, Rob Gaddi<rga...(a)technologyhighland.com> wrote:
>> On 6/8/2010 1:18 AM, Rune Allnor wrote:
>>
>>
>>
>>
>>
>>> On 8 Jun, 02:52, Vladimir Vassilevsky<nos...(a)nowhere.com> wrote:
>>>> Jerry Avins wrote:
>>>>> On 6/7/2010 8:18 AM, PaulTapper wrote:
>>
>>>>>> Hi,
>>
>>>>>> Is there a standard way of converting an IIR filter to a different sample
>>>>>> rate?
>>
>>>>>> What I mean by this is, if I have an IIR filter F0 with a particular
>>>>>> frequency response at sample rate S0, and I want to create a filter F1 to
>>>>>> give, as near as possible, the same frequency response, at a different
>>>>>> sample rate S1, is there a standard way of calculating the
>>>>>> coefficients of
>>>>>> F1 from F0?
>>
>>>>>> My initial thoughts are that maybe I can find the zeroes and poles, and
>>>>>> then rotate them around the unit circle or something, but I suspect there
>>>>>> may be a standard solution to this problem?
>>
>>>>> Why not design a new filter to the original response specs? Even if
>>>>> there were a simple transformation, the prewarping would be wrong.
>>
>>>> The problem stated by OP is quite common. Of course, it is possible to
>>>> design a filter to a new sample rate from scratch. However this implies
>>>> pretty extensive floating point math with libraries which could be too
>>>> heavy for the target hardware.
>>
>>> Would one do filter *design* with scarce computational
>>> resources? I think of design as something done once up
>>> front, on a PC, and then the coefficints might be
>>> downloaded to whatever device that would actually run
>>> the filter.
>>
>>>> If this is a case, I prefer interpolation
>>>> between the sets of coefficients.
>>
>>> Sure. With FIRs this would be possible. But IIRs?
>>
>>> Rune
>>
>> Not sure if you could interpolate the coefficients, but you could at
>> least interpolate the poles, then throw some quick math at it to turn
>> them into biquads.
>
> Still don't see how this would work. Could you sketch an
> example?
>
> Rune

The interpolation between the poles (P' = P1*a + P2*(1-a) for P = [R
theta]), or turning pole pairs into biquad coefficients?

--
Rob Gaddi, Highland Technology
Email address is currently out of order