Page 1 of 1

Hilbert transform

Posted: Tue Jul 14, 2015 4:46 pm
by jclayton
Hello all,

I have a rather basic question about Hilbert transforms. Following the example provided in the documentation, I can compute the dispersion signal from some arbitrary Gaussian absorption signal using the function hilberttrans. I then computed the dispersion signal via the secondary output of the EasySpin function gaussian using the same input parameters and arrived at a slightly different lineshape for the calculated dispersion signal. Why is this?

Re: Hilbert transform

Posted: Tue Jul 14, 2015 10:41 pm
by Stefan Stoll
Hi, can you please post a short script that shows this discrepancy?

Re: Hilbert transform

Posted: Thu Jul 16, 2015 11:24 am
by jclayton
x0 = 0; w = 0.1;
x = linspace(-1,1,1000);
yabs = gaussian(x,x0,w);
ydisp = hilberttrans(yabs);
ydisp = imag(ydisp);
[yabs,ydisp0] = gaussian(x,x0,w);
plot(x,ydisp,x,ydisp0);

Re: Hilbert transform

Posted: Sun Jul 26, 2015 1:04 pm
by Stefan Stoll
hilberttrans() computes the Hilbert transform using FFT, therefore it is only approximate. There are aliasing effects that mean that the wings of the transformed signal fold back (just like in regular FFT). Therefore, the FFT-based transform is only approximate. The dispersion shape returned by gaussian is correct.