Hilbert transform in the frequency domain 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.
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