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?
Hilbert transform
-
- EasySpin Creator
- Posts: 1120
- Joined: Mon Jul 21, 2014 10:11 pm
- Location: University of Washington
Re: Hilbert transform
Hi, can you please post a short script that shows this discrepancy?
Re: Hilbert transform
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);
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);
-
- EasySpin Creator
- Posts: 1120
- Joined: Mon Jul 21, 2014 10:11 pm
- Location: University of Washington
Re: Hilbert transform
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.