July 8th, 2011 | 1 Comment

The last entry has plotted all its data from data files, even the signal at 700Hz. In this entry we will see how to plot the signal as a function using the `special-filenames`

property of Gnuplot.

In Fig. 1 the end result is seen. What we have done is to replace the last `splot`

command from the cmr.gnu file with the following code.

set samples 500 # Define the sinusoid signal to be plotted sig(y) = y>0.1 && y<0.4 ? 0.45*sin(2*pi*100*y)+2 : 2 # The desired range is 0:0.5, but the samples were created for the # x-axis, which has a range of 0:1400, therefore we calculate an # factor to do the plot fact = 1400/0.5 splot '+' u (700):($1/fact):(sig($1/fact)) w l ls 14

We define the function `sig(y)`

which is a 100Hz sinusoid centered at 2 for values of y between 0.1 and 0.4 and constant 2 else. In order to place this two dimensional function in our 3D plot we use the `special-filenames`

property from Gnuplot, in this case the `'+'`

variant. This tells Gnuplot to use the xrange, apply a sampling of it and return it as first column for the plot command. But for our plot we need the y-axis and not the x-axis, because the x values should be constant at 700 and are therefore given by `(700)`

at the `splot`

command. The values of the first column, given by `$1`

are scaled by `fact`

in order to match the two axis and are then directly used as y values and given to the `sig(y)`

function for the z values.