convolution theorem visualization demo background

Convolution Theorem Visualization

Convolution is a core concept in today's cutting-edge technologies of machine learning and computer vision. Singularly cogent in application to digital signal processing, the convolution theorem is regarded as the most powerful tool in modern scientific analysis. Long utilised for accelerating the application of filters to images, fast training of convolutional neural networks exploit the convolution theorem to accelerate training and inference in the ubiquitous applications of computer vision that, today, are at the vanguard of the evolving artificially intelligent world in which we are becoming increasingly immersed.

Coded in modern Fortran, GNU C-Graph is the de facto tool for visualizing convolution in university courses worldwide. "C-Graph" stands for "Convolution Graph" - Free Software that makes learning about convolution easy!

Demo: Select, Transform, Visualize


Unlike other signal processing packages, C-Graph is a demo for the convolution theorem that dispenses with the learning curve for writing code. Instead, an interactive dialogue guides the user to effortlessly select values for keyboard input. Simply select waveforms from a menu, transform them via the FFT, then visualize their convolution.

Designed to enhance the learning experience, C-Graph is a signal generator featuring an attractive array of scalable pulses, periodic, and aperiodic signal types of variable frequency fundamental to the study of systems theory. The demo displays the spectra of any two waveforms chosen by the user, computes their linear convolution, then compares their circular convolution according to the convolution theorem. Each signal is modelled by a register of N discrete values (samples), and the discrete Fourier Transform (DFT) computed by the Fast Fourier Transform (FFT).

Ideal for lecture demonstrations, labs, and homework assignments, GNU C-Graph is invaluable to the visual representation of convolution.


GNU C-Graph is derived from the BSc. Honours dissertation in Electrical Engineering "Interactive Computer Package Demonstrating: Sampling Convolution and the FFT", Adrienne Gaye Thompson, University of Aberdeen (1983).

Adrienne - who is sole author of the dissertation - reproduced its Fortran 77 program in modern Fortran. She donated C-Graph to GNU realising that the package's usefulness could be enjoyed globally.


Download C-Graph from the main GNU ftp server: via HTTP or, by FTP. C-Graph can also be found on the GNU mirrors. Please use a mirror when possible.

C-Graph also comes with Fedora, the first GNU/Linux distro to include our package. Sad to say, Fedora is not quite a free distro. Should they become free, we can all then wear a Fedora for freedom!


C-Graph is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.


The C-Graph manual is currently available in pdf format, for which the Texinfo source may also be downloaded. We will be making the manual available in the usual formats published by GNU. You may also find more information about C-Graph by running info c-graph or by looking at /usr/doc/c-graph/, /usr/local/doc/c-graph/, or similar directories on your system. A brief summary is available by running c-graph --help.


Supporting You

Our mailing list is bug-c-graph. Here, we discuss C-Graph development, feaure and enhancement requests, as well as bug reports. This list is also for general user help and discussion. Announcements about C-Graph and most other GNU software are made on info-gnu (archive).

Hundreds of thousands are discovering that visualizing convolution with C-Graph is easy! See our first press releases:

Contributions from other developers are welcome! Please join us via the mailing lists.

Supporting Us

Donate! We bank on coffee to keep business wired. Buy us a cup while we code for you!

Despite the fact that universities round the world rely on C-Graph for demonstrating the convolution theorem, C-Graph - whose sole author is a Jamaican living in Jamaica - has been rewarded with zero donations since its release in 2011.

Your C-Graph experience will impact your intuitive understanding of convolution theory. Our demonstration of the convolution theorem can better meet your needs if you tell us about your sessions, suggest new features, and report any issues you may encounter while convolving signals with our demo. Let us hear from you. Get in touch and exchange ideas on bug-c-graph!

Those who value Freedom will find it cooler to Gravitate to GNU. Get on point with GNU, and read How to help.


C-Graph is dedicated to all victims of apartheid, and to Haitian-Bahamian attorney-at-law and human rights advocate, Eliezer Regnier, who died as a result of the struggle for justice.

Our logo is inspired by computer vision, the movie "Blade Runner", the copyright symbol, and Regnier's saxophone.


Please see the Translations README for information on coordinating and submitting translations for C-Graph.

Please send general FSF & GNU inquiries to <>. There are also other ways to contact the FSF.
Please send broken links and other corrections or suggestions to <>.

Copyright © 2017 Adrienne Gaye Thompson

This page is licensed under a Creative Commons Attribution-NoDerivs 3.0 United States License.

Updated: $Date: 2017/05/05 16:57:40 $