FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > DSP

DSP comp.dsp newsgroup, mailing list

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 06-29-2007, 10:58 AM
[email protected]
Guest
 
Posts: n/a
Default Calculating filter coefficients from magnitude squared filter

Good Morning,

As part of my current research, I am looking into applying IIR filters
to generate noise with a variety of spectra. These filters need to be
designed at runtime. Only the magnitude of the filter's transfer
function is relevant - the phase of the white noise process used to
drive to filter is already random. Because of this, I can use one of
the many magnitude-squared filter design approaches available.

I have implemented the method described by Dudgeon[1] (and a similar
method by Rabiner[2]), which casts the problem of designing a filter
as a linear programming problem, then uses a differential correction
algorithm to find a Chebyshev-optimum filter for the given response.

My problem is that the output of this algorithm is the sets of
coefficients c_i and d_i of the polynomials C and D, making the
transfer function

F = C/D
and
F = H(z)H(z-1)

where
H(z) = B(z)/A(z)

What I want to get are the coefficients a and b of polynomials A and
B, to get a filter with the transfer function H(z).

The coefficients c and b of C and B are related like this:
C = \sum_{i=-m}^{m} c_i z^{-1}
and
C = (\sum_{i=0}^{m} b_i z^{-i})(\sum_{i=0}{m} b_i z^{i})
with the same going for D and A.

Is there a general way to extract co-efficients a and b from c and d?
It seems as though there should be, and I am just being extremely
slow.

Regards

Marc Brooker

References:

[1] @ARTICLE{Dudgeon1974,
author = {Dan E. Dudgeon},
title = {Recursive Filter Design Using Differential Correction},
journal = {IEEE Transactions on Acoustics, Speech, and Signal
Processing},
year = {1974},
volume = {22},
pages = {443-448},
number = {6},
month = dec
}

[2] @ARTICLE{Rabiner1974,
author = {Lawrence R. Rabiner and Nancy Y. Graham and Howard D.
Helms},
title = {Linear Programming Design of IIR Digital Filters with
Arbitrary Magnitude Function},
journal = {IEEE Transactions on Acoustics, Speech, And Signal
Processing},
year = {1974},
volume = {22},
pages = {117-123},
number = {2},
month = apr
}

Reply With Quote
  #2 (permalink)  
Old 06-29-2007, 11:41 AM
[email protected]
Guest
 
Posts: n/a
Default Re: Calculating filter coefficients from magnitude squared filter

On Jun 29, 8:58 pm, marcbroo...@gmail.com wrote:
> Good Morning,
>
> As part of my current research, I am looking into applying IIR filters
> to generate noise with a variety of spectra. These filters need to be
> designed at runtime. Only the magnitude of the filter's transfer
> function is relevant - the phase of the white noise process used to
> drive to filter is already random. Because of this, I can use one of
> the many magnitude-squared filter design approaches available.
>
> I have implemented the method described by Dudgeon[1] (and a similar
> method by Rabiner[2]), which casts the problem of designing a filter
> as a linear programming problem, then uses a differential correction
> algorithm to find a Chebyshev-optimum filter for the given response.
>
> My problem is that the output of this algorithm is the sets of
> coefficients c_i and d_i of the polynomials C and D, making the
> transfer function
>
> F = C/D
> and
> F = H(z)H(z-1)
>
> where
> H(z) = B(z)/A(z)
>
> What I want to get are the coefficients a and b of polynomials A and
> B, to get a filter with the transfer function H(z).
>
> The coefficients c and b of C and B are related like this:
> C = \sum_{i=-m}^{m} c_i z^{-1}
> and
> C = (\sum_{i=0}^{m} b_i z^{-i})(\sum_{i=0}{m} b_i z^{i})
> with the same going for D and A.
>
> Is there a general way to extract co-efficients a and b from c and d?
> It seems as though there should be, and I am just being extremely
> slow.
>
> Regards
>
> Marc Brooker
>
> References:
>
> [1] @ARTICLE{Dudgeon1974,
> author = {Dan E. Dudgeon},
> title = {Recursive Filter Design Using Differential Correction},
> journal = {IEEE Transactions on Acoustics, Speech, and Signal
> Processing},
> year = {1974},
> volume = {22},
> pages = {443-448},
> number = {6},
> month = dec
>
> }
>
> [2] @ARTICLE{Rabiner1974,
> author = {Lawrence R. Rabiner and Nancy Y. Graham and Howard D.
> Helms},
> title = {Linear Programming Design of IIR Digital Filters with
> Arbitrary Magnitude Function},
> journal = {IEEE Transactions on Acoustics, Speech, And Signal
> Processing},
> year = {1974},
> volume = {22},
> pages = {117-123},
> number = {2},
> month = apr
>
> }


Don't completely understand your problem but the answer may well be
Spectral Factorization. Given a Power spectrum one can always factor
thus

S(z)=H(z)H(z^-1)

where H(z) is uncausal and H(z^-1) is causal. Loads of papers on this
from the days of Wiener. You can even do this with multivariable
spectra.

Reply With Quote
  #3 (permalink)  
Old 06-29-2007, 07:46 PM
[email protected]
Guest
 
Posts: n/a
Default Re: Calculating filter coefficients from magnitude squared filter

On Jun 29, 11:41 am, gay.highlan...@yahoo.co.uk wrote:
> On Jun 29, 8:58 pm, marcbroo...@gmail.com wrote:
>
>
>
> > Good Morning,

>
> > As part of my current research, I am looking into applying IIR filters
> > to generate noise with a variety of spectra. These filters need to be
> > designed at runtime. Only the magnitude of the filter's transfer
> > function is relevant - the phase of the white noise process used to
> > drive to filter is already random. Because of this, I can use one of
> > the many magnitude-squared filter design approaches available.

snip
>
> Don't completely understand your problem but the answer may well be
> Spectral Factorization. Given a Power spectrum one can always factor
> thus
>
> S(z)=H(z)H(z^-1)
>
> where H(z) is uncausal and H(z^-1) is causal. Loads of papers on this
> from the days of Wiener. You can even do this with multivariable
> spectra.


Thanks.

"Spectral factorization" seems to be the term i was looking for. The
problem I am having at the moment is that none of the poles or zeros
of my S(z) are anywhere near being on (or outside) the unit circle.
It's probably an implementation problem, though.

Cheers

Marc

Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
calculating the coefficients of a butterworth iir filter dilpreet06 DSP 4 08-10-2006 09:08 AM
Calculating the gain of a comb-resonator bandpass filter dazedandconfused DSP 2 06-16-2006 03:28 PM
Magnitude squared coherence Cliff DSP 1 02-07-2006 10:28 PM
FIR Lattice Filter Reflection Coefficients in Terms of Direct Coefficients? Randy Yates DSP 11 11-02-2004 05:50 AM
Numerical Errors when calculating a Minimum version FIR Filter Pepe Barbe DSP 0 08-15-2003 06:45 AM


All times are GMT +1. The time now is 04:22 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved