Re: Frequency response of a complex IIR filter (Matt Flax )

This is a multi-part message in MIME format.
--------------020504090106060605000002
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
I have code here which you can use :
http://packages.debian.org/squeeze/libgtfb0-dev
however it is in C++ - and it is higher order then what you mention.
I am a little confused by what you write below ...
Aren't you after a real time domain signal ?
The history of the Gammatone goes back to short term integrals of neural
spike trains (Joannesma) I am not sure of the significance of the phase
- as the Gammatone was a nice mathematical choice (at the time) for
fitting data which is both nonlinear and state dependent.
The Gammachirp came along afterwards ... was very computationally
complex, however attempted to match the experimental data more closely
... it varied filter shape with time ... I seem to remember having the
C++ code for that lying around ... if I haven't released it yet!
Matt
On 27/01/12 01:02, Piotr Holonowicz wrote:
>
>
> Hi all!
> I am trying to make a digital implementation of the One Zero Gammatone
> Filterbank (OZGF), however, I need the output to be complex instead of
> real. I have converted the filter equations by R. Lyon with the
> partial fraction expansion obtaining two conjugate poles, then treated
> it with the bilinear transform. The final stage is the coupled form of
> a complex IIR. In order to check the implementation, I would like to
> plot the frequency response of a single filter channel (= a cascade of
> three low-pass biquads + one bandpass biquad). But here is where I got
> a bit puzzled - for a real domain filter, the way to do it is to plot
> the magnitude and the phase of the FFT of the impulse response. How to
> do it however, with a complex output u+jv (<=> r exp (jw0)) ? My
> intuition says it might be done by computing y= r exp (w0) and then
> computing abs(fft(y)) and angle(fft(y)). Is this the correct way to do
> it or shall I treat the real and the imaginary output separately - in
> that case how to interpret the outcome?
> I enclose the python prototype code, it requires only the numpy/scipy
> and the matplotlib(pylab) to run.
> I'll be very thankful for help.
> Best
> Piotr Holonowicz
>
> PhD candidate at Music Technology Group
> Universitat Pompeu Fabra
> Barcelona,Spain
>
--------------020504090106060605000002
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
I have code here which you can use :<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<a href="http://packages.debian.org/squeeze/libgtfb0-dev">http://packages.debian.org/squeeze/libgtfb0-dev</a><br>
<br>
however it is in C++ - and it is higher order then what you mention.<br>
I am a little confused by what you write below ...<br>
Aren't you after a real time domain signal ?<br>
<br>
The history of the Gammatone goes back to short term integrals of
neural spike trains (Joannesma) I am not sure of the significance of
the phase - as the Gammatone was a nice mathematical choice (at the
time) for fitting data which is both nonlinear and state dependent.<br>
<br>
The Gammachirp came along afterwards ... was very computationally
complex, however attempted to match the experimental data more
closely ... it varied filter shape with time ... I seem to remember
having the C++ code for that lying around ... if I haven't released
it yet!<br>
<br>
Matt<br>
<br>
On 27/01/12 01:02, Piotr Holonowicz wrote:
<blockquote
cite="mid:30369_1327586871_4F215E37_30369_414_1_4F215D01.1080704@xxxxxxxx"
type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
<style>body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
<style>body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
<p><br>
</p>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
<style>body p { margin-bottom: 0cm; margin-top: 0pt; }</style>Hi
all!<br>
I am trying to make a digital implementation of the One Zero
Gammatone Filterbank (OZGF), however, I need the output to be
complex instead of real. I have converted the filter equations by
R. Lyon with the partial fraction expansion obtaining two
conjugate poles, then treated it with the bilinear transform. The
final stage is the coupled form of a complex IIR. In order to
check the implementation, I would like to plot the frequency
response of a single filter channel (= a cascade of three low-pass
biquads + one bandpass biquad). But here is where I got a bit
puzzled - for a real domain filter,&nbsp; the way to do it is to plot
the magnitude and the phase of the FFT of the impulse response.
How to do it however, with a complex output u+jv (&lt;=&gt; r exp
(jw0)) ? My intuition says it might be done by computing y= r exp
(w0) and then computing abs(fft(y)) and angle(fft(y)). Is this the
correct way to do it or shall I treat the real and the imaginary
output separately - in that case how to interpret the outcome? <br>
I enclose the python prototype code, it requires only the
numpy/scipy and the matplotlib(pylab) to run.<br>
I'll be very thankful for help.<br>
Best<br>
Piotr Holonowicz<br>
<br>
PhD candidate at Music Technology Group<br>
Universitat Pompeu Fabra<br>
Barcelona,Spain<br>
<br>
</blockquote>
<br>
</body>
</html>
--------------020504090106060605000002--