en fr

Example of SQ file for Sysquake

Programs for Sysquake, called SQ files, implement only the definition of figures and how the user can interact with them. Sysquake provides itself support for synchronizing the figures, zoom, undo/redo, and file management.

To show you how simple they can be, here is an SQ file which displays in the same figure the magnitude of the frequency response of a continuous-time system, and the same system sampled at a frequency you can manipulate with the mouse. The Shannon theorem, which states that the sample frequency should be at least two times higher than the bandwidth of the signal to be sampled in order to avoid loosing information (i.e. there should be enough samples to catch the fastest changes), and the aliasing which occurs when it is not verified, are much easier to understand than with a mathematical demonstration or with static figures.

Here is the code of this SQ file:

variable Ts      // sample time

init Ts = init   // init handler for initial values

figure "Frequency Response"       // new figure definition
draw drawFreq(Ts)                 // draw handler
mousedrag Ts = dragFreq(_id, _x1) // manipulation handler

functions
{@
function Ts = init
  Ts = 0.2;
  subplots('Frequency Response');

function drawFreq(Ts)
  scale('linlin/logdb', [0,20*pi]);  // default scale
  Ac = poly([-2,-1+10j,-1-10j]); // continuous-time t.f.
  Bc = Ac(end);                  //  defined by its poles
  bodemag(Bc, Ac);               // plot freq. response
  (Bd, Ad) = c2dm(Bc, Ac, Ts, 'z');  // -> discrete time
  dbodemag(Bd, Ad, Ts, 'r');     // plot freq. response in red
  line([1,0], pi / Ts, 'b', 1);  // plot Nyquist freq. in blue
                                 //  which can be manipulated

function Ts = dragFreq(id, x)
  if ~same(id, 1)                // not the Nyquist frequency
    cancel;                      // cancel the drag
  end
  Ts = pi / x;                   // new sample time
@}

Open this file in Sysquake, move the Nyquist frequency (half the sample frequency, displayed as a vertical blue line) with the mouse, and here is what you will observe:

The lower the Nyquist frequency, the worse the sampled signal (in red) approximates the continuous-time signal (in black).