IIR Hilbert - Matlab help anyone
- From: davew <david.wooff@xxxxxxxxx>
- Date: Thu, 2 Jul 2009 09:25:16 -0700 (PDT)
Hi,
I'm (trying to) implement an IIR Hilbert Transformer. I found a
reference to a design which provides the z domain poles and zeros as
listed at the bottom of this post. The function is 12th order and I
figured that I could implement this conveniently with 6 cascaded
biquads (which I happen to have available in my FPGA DSP design).
I calculated out the IIR filter coeffs by taking the conjugate pole
pairs and zero pairs and multiplying them out to provide a function
like z^2 + aZ + b to provide the coefficients. These are listed below
also:
I then simply transplanted these coefficients into my biquad DSP (b
coeffs do not need to be negated as is often the case).
The response I get is not what I expected. It is flat in magnitude
with 45dB gain (should be 0dB) but the phase constantly varies instead
of being roughly 90 degrees for most of the band.
I also computed the frequency response in Excel and this does not
appear to give the response expected either. I assume it's finger
trouble but would someone out there mind having a look at this problem
in Matlab? I don't have Matlab or Scilab (and not trained up) and I
think it would be relatively straightforward for an experienced person
to check these calculations.
Many thanks if you can spare some time to look at this and please feel
free to call me stupid if I have made an obviously bad assumption.
Zeros (complex)
=========================
a jb
-0.834946 -1.459074
-0.834946 1.459074
0.834946 -1.459074
0.834946 1.459074
0 -1.707483
0 1.707483
-1.362397 -0.79655
-1.362397 0.79655
1.362397 -0.79655
1.362397 0.79655
-1.118507 0
1.118507 0
Poles (complex)
==============
-0.894071 0
0.894071 0
-0.547048 -0.319837
-0.547048 0.319837
0.547048 -0.319837
0.547048 0.319837
-0.295469 -0.516331
-0.295469 0.516331
0.295469 -0.516331
0.295469 0.516331
0 -0.585696
0 0.585696
Coefficients (numerator coeffs first then denominator):
======================================
a0 a1 a2
1 -1.669892 2.82603176
1 -1.669892 2.82603176
1 1.669892 2.82603176
1 0 2.915498195
1 -2.724794 2.490617488
1 2.724794 2.490617488
1 0 -1.251057909
(1) b1 b2
1 0 -0.799362953
1 -1.094096 0.401557221
1 1.094096 0.401557221
1 -0.590938 0.353899632
1 0.590938 0.353899632
1 0 0.343039804
.
- Follow-Ups:
- Re: IIR Hilbert - Matlab help anyone
- From: davew
- Re: IIR Hilbert - Matlab help anyone
- Prev by Date: Re: Aliasing question
- Next by Date: Re: Using Matlab to model RF system
- Previous by thread: Test Message
- Next by thread: Re: IIR Hilbert - Matlab help anyone
- Index(es):
Relevant Pages
|
Loading