Hilbert transform

General forum for EasySpin: questions, how to's, etc.
Post Reply
jclayton
Newbie
Posts: 4
Joined: Fri Apr 03, 2015 9:30 am

Hilbert transform

Post 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?
Stefan Stoll
EasySpin Creator
Posts: 1073
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Hilbert transform

Post by Stefan Stoll »

Hi, can you please post a short script that shows this discrepancy?
jclayton
Newbie
Posts: 4
Joined: Fri Apr 03, 2015 9:30 am

Re: Hilbert transform

Post 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);
Stefan Stoll
EasySpin Creator
Posts: 1073
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Hilbert transform

Post 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.
Post Reply