Home page
Course outline
Matlab scripts
Problem sets
Projects
Exams
Columbia Courseworks (Discussion Board)

Matlab diaries and Pd patches
The following scripts and functions relate to the demonstrations I give
in class. They are all contained in the matlab
and pd
subdirectories of the web site.
Note: The matlab functions defined in the textbook can be downloaded from
the publisher's
Digital Signal Processing textbook website.
More information about PureData/Pd (including free downloads) can be found at
puredata.info.
 20150527: Timescale modification, exponential sequences, 3D visualization of complex numbers.
Also: whiten, the signal whitening and filter estimation routine, solafs the timescale modification program, and stemz, the function to plot complex sequences in 3D.
 20150603: The Pd demos that illustrate a DT system "running" are MA.pd (for the moving average) and Accum.pd for the accumulator. These simulations rely on ncounter.pd (to manage the incrementing counter for n), Z1.pd (the onestep delay), and summer.pd (the summation node). I had to pull some odd tricks to make this work the way I wanted to, but you might find the implementations helpful.
 20150608: Running a system; convolution; using a recorded impulse response to simulate reverberation (sound examples are in the matlab directory).
 20150610: The Pd demo of the output of resonances was modes.pd, which used the tone generator of funcgen~.pd (which also needs audiosel~.pd).
 20150610: Solving difference equations algorithmically; crosscorrelation visualization (here is corrviz.m).
 20150615: buildsq.m: Animation to show square wave being built up out of successive terms of Fourier series. Try "buildsq(10)" to start; larger arguments make the fadein slower.
 20150617: Convolution in the DTFT domain.
 20150624: See the example of Evaluating the Z transform numerically that compares a literal evaluation of the Z transform definition with the results of the closedform expression, highlighting the role of the region of convergence.
 20150629: Visualization of the ztransformmagnitude surface.
 20150701: Illustrating how the effect of a given system on a mixture of two sinusoids is predicted by the frequency response.
 20150706: Here's an excellent interactive polezero editor from Jim McClellan at Georgia Tech. You can drag poles and zeros around the zplane, and immediately see how the magnitude and phase response, as well as the impulse response, change. Here's a local copy of the documentation.
 20150706: Here's the script I used to generate movies illustrating the geometric interpretation of polezero diagrams (relies on Malcolm Slaney's MakeQTMovie.m), and here's the phasegroupdelay function to visualize the difference between delaying the envelope (group delay) and delaying the carrier (phase delay)
 20150706: Handdesigned filter to remove 0.4 rad/samp sinusoid while preserving 0.1 rad/samp sine.
 20150708: Simple bandpass filter example.
 20150720: Allpass filters and the sound of group delay. (Here is vizZTsurf.m, based on the ZT surface visualization above.)
 20150727: Analog Butterworth filter design.
 20150805:
Animation to illustrate Gibbs phenomenon which uses convanim.m. The resulting movie is
convanim.mp4 (1MB).
FIR filter design by windowing ideal IR.
 20150810: Animation to illustrate the Remez exchange algorithm which uses remezviz2, lagrangepoly, shiftpoly, and chebpolyval.
 20150812: FFT and STFT examples (the interactive spectrogram uses funcslider.m, the denoising uses stft.m and istft.m).
 20150819: Aliasing and resampling.
This work is licensed under a Creative Commons AttributionNonCommercial 3.0 Unported License.
Dan Ellis
<dpwe@ee.columbia.edu>
Last updated: Tue Jun 02 10:16:16 EDT 2015
