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$ – Marcus Müller Nov 8 '20 at 10:07
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 '20 at 1:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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