A graph of the Hilbert transform (red) of a square wave (blue).
[edit] Instructions
See Wikipedia graph-making tips.
Plotted in Maxima with the following commands:
Heaviside step function:
u(t) := 1/2*(1+signum(t));
Rectangular function:
rect(t) := u(t + 1/2) - u(t - 1/2);
A train of rectangular pulses (or a square wave). This should be n=−∞..+∞, but I can't get Maxima to evaluate it, so I just chose n values that would give a close enough approximation for the visible area:
train(t) := sum(rect(t-2*n),n,-10,20);
The Hilbert transform of a rectangular pulse:
hrect(t) := log(abs((t+1/2)/(t-1/2)))/%PI;
A "train" of hrects. Again with the approximation, though this time it actually matters (rectangular function is 0 everywhere; this is not.):
htrain(t) := sum(hrect(t-2*n),n,-100,100);
The plot command:
plot2d([train(t)-0.5,htrain(t)],[t,0,6],[y,-1,1],[nticks,500], [gnuplot_preamble,"set grid; set ytics 1; set nokey"], [gnuplot_ps_term_command,"set term postscript enhanced landscape color solid lw 2 'Times-Roman' 20"], [gnuplot_term,ps], [gnuplot_out_file,"hilbert.ps"]);
This causes gnuplot to create a .ps file.
To convert the PostScript file to PNG:
- Open it in the GIMP (make sure you have ghostscript installed! - Windows instructions)
- Enter 500 under Resolution (it doesn't say "DPI" but I think that's what it means)
- Uncheck Try bounding box (since the bounding box cuts off the edge, unfortunately. You can try with the bounding box first.)
- Enter large values for Width and Height
- Check Color
- Check Strong anti-aliasing for both graphics and text
- Crop off extra whitespace (Shift+C if you can't find it in the toolbox)
- Possibly need to rotate it: Click Image → Transform → Rotate 90 degrees clockwise
Filters → Blur → Gaussian blur at 2.0 px (No need to blur if you use strong anti-aliasing during conversion. I see no significant difference between end results.)
- Image → Scale Image...
- Width and Height at 25%
- Cubic interpolation
- You can view at normal size if you want by pressing 1, Ctrl+E
- Save as Hilbert transform.png
Original version of this plot was made in GNU Octave with the command:
imag(hilbert(x))
Created by User:Omegatron using gnuplot, possibly with post-processing in the GIMP (PNG) or Inkscape (SVG)
I, the copyright holder of this work, hereby publish it under the following licenses:
You may select the license of your choice.
|
(In short, this means that you can copy and modify the image freely as long as you provide attribution; preferably in the form of a link back to this page.)
Click on a date/time to view the file as it appeared at that time.
The following pages on the English Wikipedia link to this file (pages on other projects are not listed):