Example: Signal flow building blocks

Published 2007-01-09 | Author: Karlheinz Ochs

The signalflow library by Karlheinz Ochs defines a variety of building blocks that can be used to draw signal flow diagrams. Examples are input and output nodes, multiplier and adder nodes, and filter and delay blocks. The library also extends the node placement syntax by adding the constructs right from=, above from= etc., that places nodes relative to node boundaries instead of node centers.


  • Download the version of the signalflow library used in this example: signalflow.zip
Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany

Download as: [PDF] [TEX]

Signal flow building blocks

Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de. En français: TeXnique.fr.

% Some basic examples for signal flow diagrams.
% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
% Version: 0.1
% Date: 2007/01/05

% Basic definitions of the symbols used in a signal flow diagram

% - input and output terminal
\begin{signalflow}{Terminals and branches}
    % - input terminal
        \node[input]      (in)                 {$x(t)$};
        \node[coordinate] (c)  [right from=in] {};
        % signal path
        \path[r>] (in) -- (c);
    % - output terminal
        \node[output]     (out)                {$y(t)$};
        \node[coordinate] (c)  [left from=out] {};
        % signal path
        \path[r>] (c) -- (out);
    % - branching node
        \node[input]  (in)                          {$x(t)$};
        \node[node]   (nd)    [right from=in]       {};
        \node[output] (out1)  [above right from=nd] {$x(t)$};
        \node[output] (out2)  [below right from=nd] {$x(t)$};
        % signal paths
        \path[r>] (in) -- (nd);
        \path[r>] (nd) |- (out1);
        \path[r>] (nd) |- (out2);

\begin{signalflow}{Multiplier and adder}
    % - multiplier
        \node[input]      (in)                     {$x(t)$};
        \node[multiplier] (mul) [right from=in]  {\nodepart{above}{$\alpha$}};
        \node[output]     (out) [right from=mul] {$\alpha x(t)$};
        % signal paths
        \path[r>] (in)  -- (mul);
        \path[r>] (mul) -- (out);
    % - adder
        \node[adder]  (add)                       {};
        \node[input]  (in1) [above left from=add] {$x_1(t)$};
        \node[input]  (in2) [below left from=add] {$x_2(t)$};
        \node[output] (out) [right from=add]      {$x_1(t)+x_2(t)$};
        % signal paths
        \path[r>] (in1) -| (add);
        \path[r>] (in2) -| (add);
        \path[r>] (add) -- (out);

% - modulator
   \node[modulator] (mul)                       {};
   \node[input]     (in1) [above left from=mul] {$x_1(t)$};
   \node[input]     (in2) [below left from=mul] {$x_2(t)$};
   \node[output]    (out) [right from=mul]      {$x_1(t)x_2(t)$};
   % signal paths
   \path[r>] (in1) -| (mul);
   \path[r>] (in2) -| (mul);
   \path[r>] (mul) -- (out);

\begin{signalflow}{Delay element and filter}
    % - delay element
        \node[input]  (in)                   {$x(t)$};
        \node[delay]  (del) [right from=in]  {$T$};
        \node[output] (out) [right from=del] {$x(t-T)$};
        % signal paths
        \path[r>] (in)  -- (del);
        \path[r>] (del) -- (out);
    % - filter
        \node[input]  (in)                   {$x(t)$};
        \node[filter] (fil) [right from=in]  {$q(t)$};
        \node[output] (out) [right from=fil] {$x(t)\ast q(t)$};
        % signal paths
        \path[r>] (in)  -- (fil);
        \path[r>] (fil) -- (out);



  • #1 Ole Martin Christensen, May 11, 2009 at 3:52 p.m.

    how do one install this?

  • #2 Ramón Jaramillo, June 30, 2013 at 4:15 a.m.

    It's a great example but it's not possible to use in writeLaTeX web, because this site needs the files zipped in signalflow.zip. I suggest to run this file in your own PC.

Adding comments is currently not enabled.