As one would learn in a basic signal processing / controls / dynamical systems class, the multiplication by an LTI transfer function F(s) in the frequency domain is the same operation as convolution with f(t) in the time domain.
While the equation for convolution of two functions is simple, it took me a while before I understood what that integral really means in a graphical, intuitive way.
This program displays the convolution of two functions, specified either in the time domain or frequency domain (if the Control System Toolbox is installed), in what I hope is an easy-to-understand manner.
Limitations: Impulses are not currently supported, meaning transfer functions that are not strictly proper will have their direct feedthrough part ignored. Put more simply,
If you specify F(s) = (s^n + ... ) / (s^m + ... ) then
n should be less than m.
Teja Muppirala (2020). Graphical Demonstration of Convolution (https://www.mathworks.com/matlabcentral/fileexchange/25199-graphical-demonstration-of-convolution), MATLAB Central File Exchange. Retrieved .
Seems to be broken on 2019a and b - at least on a Mac Catalina 10.15.
It turned out that there was an unnecessary AXES command in the slider callback that was causing the GUI to crash when it was called repeatedly. That should be fixed now.
Hmmm. If I move the slider for a long time (about 15 seconds), the GUI fails.
Does this happen to anyone else?
The way I rigged the slider to update dynamically upon dragging is a little shady, and therein may lie the problem.
I'll have to check on this...
Removed a couple of unnecessary AXES commands which were causing the GUI to crash after some time
Fixed various bugs involving nans/infs and checking for the Control System Toolbox
Now correctly checks to see if the control system toolbox is installed, and also fixed some issues with infs/nans