LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Hilbert FIR coefficients

Hi all,

 

I have a problem with a Hilbert Transform I need to implement on a 16 bit MCU.

 

What I want in fact is to obtain a 90 phase shift on a wide range of frequencies but not to modify the amplitude information.

 

From what I have seen on internet usually is used a FIR structure to implement the Hilbert transform. Very easy!

But... how do I compute the coefficients??!!!

 

I found there the "Fast Hilbert Transform.vi", which is doing exactly what I need but there are no coefficients....

I fount another vi: "Parks-McClellan.vi" with an option: "Hilbert" filter and it was giving coefficients.. great

 

To test if it is doing what I need I made the vi from this post. I used the "IIR filter.vi" to which I give the forward coefficients (reverse coefficients is empty) from "Parks-McClellan.vi" and.. the great result is not what I need.. 😞 as you can see by running the vi.

 

Why???

Please help!

 

Andrei

 

P.S. I use LV6.1

0 Kudos
Message 1 of 5
(6,005 Views)

I thing I was unclear in the previous post.

I just want to know if it is possible in LV6.1 to compute the coefficients for a FIR structure to obtain a Hilbert transform.

Please Help.

Andrei

0 Kudos
Message 2 of 5
(5,978 Views)
Hi again,
 
After desperately searcing on internet ways of computing coeff for Hilbert transform. I found one: http://www-users.cs.york.ac.uk/~fisher/mkfilter/
apaprently is as accurate as Parks-McClellan.vi since both give the same results.
 
The big problem I have is: why phase is not constant at -90degrees?
As you can see from the attachet prinscreen it is tipical for a FIR!?
 
Please Help!
 
Andrei
0 Kudos
Message 3 of 5
(5,972 Views)
Hi,

The VI you attached does not have default values so that it does not give any outputs.

The phase response of a Hilbert FIR is represented as:

theta (w) = -pi/2 + k*w,

where k is a constant decided by FIR filter order and 0 < w < pi. Hence, what you see in the graph is correct.

Because the Hilbert transformer is an FIR, it has group delay which equal half filter order. You must delay your original signal half filter order also before doing FRF. I don't have LV 6.1 on my machine. Here is a diagram for your reference.
Message 4 of 5
(5,958 Views)

Thank you very much Richtian,

I didn't realize this obvious fact, silly me.

Now it is working very well, I am so happy 🙂

Thank you again! 

Andrei

0 Kudos
Message 5 of 5
(5,950 Views)