2
$\begingroup$

As I know, the Hilbert transform $$ H(x(t))=\frac{1}{\pi t}\star x(t) $$ in time domain is equal to $$ -j \operatorname{sgn}(f) \cdot X(f) $$ in frequency domain. so I tried simple example using MATLAB as below,

x=[1,2,7,3];
y1=imag(hilbert(x));
f=[0,1,2,-1];
y2=ifft(-1i*sign(f).*fft(x));

but the result of y1 and y2 are different as below

y1 =
    0.5000   -3.0000   -0.5000    3.0000
y2 =
   0.5000 - 0.7500i  -3.0000 + 0.7500i  -0.5000 - 0.7500i   3.0000 + 0.7500i

just only the real part of y2 is same with y1.

Any one who knows why please explain.

$\endgroup$
1
  • $\begingroup$ FFT = DFT != continuous Fourier transform. $\endgroup$ Nov 8, 2020 at 10:07

1 Answer 1

2
$\begingroup$

The discrete-time Fourier transform (DTFT) is always periodic. This is also the case for the frequency response of the discrete-time Hilbert transformer. For this reason, the ideal frequency response is not only zero at DC but also at Nyquist, which corresponds to index $2$ for a signal of length $4$. Consequently, the correct way to do what you're trying to do is:

x = [1,2,7,3];
X = fft(x);
hil = [0,-1i,0,1i];
Y = hil .* X;
y = ifft(Y);
y =

  0.5  -3  -0.5  3
$\endgroup$
1
  • $\begingroup$ Thank you so much, it's nice to understand. $\endgroup$
    – agile
    Nov 9, 2020 at 1:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.