|
"Vahila Chowdary " <k.vahila@gmail.com> wrote in message <hcs0vu$8ti$1@fred.mathworks.com>...
> Helllo everybody!
>
> I would like to know the way 'h' in hilbert transformation is given values. This is the thing i found in MATLAB but really could nt understand how they do it.
>
> In detail, hilbert uses a four-step algorithm:
>
> 1.It calculates the FFT of the input sequence, storing the result in a vector x.
> 2.It creates a vector h whose elements h(i) have the values:
> * 1 for i = 1, (n/2)+1
> * 2 for i = 2, 3, ... , (n/2)
> * 0 for i = (n/2)+2, ... , n
> 3.It calculates the element-wise product of x and h.
> 4.It calculates the inverse FFT of the sequence obtained in step 3 and returns the first n elements of the result.
>
> Could someone tell me the 2nd step clearly?
>
> Thank you
Hi Vahila,
The analytic signal (corresponding to a signal X) has a Fourier transform which is zero for the negative frequencies, equal to the Fourier transform of X at zero frequency (DC), and 2 times the value of the Fourier transform of X at positive frequencies.
What step two in the algorithm is saying is that Matlab sets up a vector that scales the Fourier transform of the input signal X according to the definition (a vector of the appropriate scaling factors). Negative frequencies are multiplied by zero. Zero frequency (and the Nyquist) are multiplied by 1 (unscaled), and the positive frequencies are multiplied by two. Once you have the appropriate scaling on the Fourier transform of X, taking the inverse Fourier transform yields the analytic signal.
Hope that helps,
Wayne
|