These demonstrations are a compilation of Matlab scripts which have been used as lecture supplements for EE438: Digital Signal Processing with Applications. Contributors include Prof. Jan Allebach, Prof. Charles Bouman, and Prof. Michael Zoltowski.
The Matlab scripts have been written over a period of several years, therefore some problems may occur when running them on the latest release of Matlab. They should currently be compatible with Matlab 6.1.
If you are unfamiliar with Matlab, please refer to Purdue's ECN Matlab tutorials.
Signal_opps.m
: Illustrates how to do basic signal manipulations in Matlab, namely
time-shifting, time-reversal, up sampling, and down sampling.
Signal_opps_appl.m
: Performs the above operations on a speech signal, and the results
are played through the sound card.
*Requires the ascii data file
erf1s1t0.
System_1_char.m,  
System_2_char.m
: Shows time and frequency domain properties of two different systems.
*Requires the additional scripts:  
system_1.m,  
system_2.m,  
sig_1_gen.m,  
sig_2_gen.m,  
dtft.m.
analyzer.m
: This script looks at the frequency-domain effects of clipping a signal.
Signal-to-noise ratio and total harmonic distortion are computed.
*Requires the additional scripts:  
sig_3_gen.m,  
system_3.m,  
dtft.m.
notcheg1.m
: Application of an IIR notch filter to a corrupted speech signal.
notcheg2.m
: Application of both IIR and FIR notch filters to a corrupted speech signal.
*Both demos require the ascii data file
erf1s1t0.
zpgui.m : Illustrates the correspondence between the z-transform and frequency response for a rational transfer function. A user interface allows the poles and zeros to be placed, and the corresponding frequency response is plotted.
aliaseg1.m
: A word utterance is effectively sampled at four different
rates and played back to hear the effects of aliasing.
The spectral effects are also illustrated.
aliaseg2.m
: Same as previous example, but low-pass
filtering is applied to prevent aliasing.
*Requires the ascii data file
enf1s1t0.
spectral_analysis.m
: Illustrates the effect of truncating a time-domain signal by showing
the correspondence between spectra of the orignal and truncated signals.
trunceffects.m
: Illustrates the effect of truncating a sum of two sinewaves.
The effects are analyzed as a function of the separation in
frequency and the differential in amplitude amongst the two sinewaves.
windowedsines.m
: Illustrates the effect of multiplying a data
block by a tapered window vs. no windowing.
windowseg.m
: Illustrates the spectra of various windows.
windowseg2.m,
: Illustrate the sidelobe cancellation and mainlobe widening
effects achieved with a sine window, relative
to a rectangular window of the same length.
sineDFTeg.m : Sampling the DTFT of a finite length sinusoid.
circ_conv.m : Illustrates the correspondence between convolution in the time-domain and multiplication in the discrete frequency domain.
timealias.m : Illustration of time-domain aliasing due to choosing an improper length DFT.
ups_dwns.m
: A speech signal is downsampled and upsampled, the spectra
are plotted, and the results are run through the sound card.
No low-pass filtering is performed in either case.
dec_int.m
: Same exercise as above, except a low-pass filter is applied before
downsampling and after upsampling.
*Requires the ascii data file
erf1s1t0.
upsample1.m
: Upsampling a speech signal by a factor of two.
upsample2.m
: Similar to the above demo, but the upsampling is performed
with the more efficient polyphase implementation.
*Requires the ascii data file
enf1s1t0.
This stereo.pdf document provides some background on stereo multiplexing.
stereo_mux.m
: Script for multiplexing two audio signals.
*Requires the data files:  
erf1s1t0,  
ysf1s1t0.
random_signals_1.m
: Computes the sample mean as a function of the sample size.
random_signals_2.m
: Correlation between a signal and a version with additive noise.
random_signals_3.m
: Computes a histogram.
random_signals_4.m
: Illustrates the effect of filtering a white random sequence.
The output autocorrelation and scatter plots are generated.
speech_plot.m
: This script plots the different sections of a speech signal.
*Requires the ascii data file
erf1s1t0.
quantizeb2.m
: A speech signal is quantized to a specified number of levels.
The results are played through the sound card, and quantization
error and signal spectra are computed.
*Requires the ascii data file
erf1s1t0.
ZOHeg1.m
: The effects of a zero-order hold process are played through the sound card.
*Requires the ascii data file
00f1s2t0.
circ_jinc.m
: This generates a circ function and computes its 2D
discrete Fourier transform (DFT).
cos2d.m
: This generates a spatial cosine wave and computes its 2D DFT.
cos2dxcirc.m
: This combines the previous two results by computing the product of a
spatial cosine and a circ function.
rect_sinc2d.m
: This generates a 2D rect function and computes its 2D DFT.
grating.m
: This computes the spectrum of a grating pattern, which is encountered
in many digital acquisition systems.
sine_sampling.m : This illustrates the effect of undersampling a 2D sinusoid.
Run.m : Matlab script which runs a convolution back-projection demo. A phantom image is generated and the forward projection of the phantom is computed. A back-projection filter is then applied to each projection, and the image is reconstructed. All the following scripts are required.
Phantom.m
: Generates the phantom image.
Project.m
: Computes projections of an image at a specified set of angles.
CBPFilter.m
: Computes the impulse response of the back-projection filter.
BackProj.m
: Computes the back-projection using a specified set of projection angles.
DisplayImg.m
: Displays a grayscale image.
These demonstrations run a Matlab GUI to allow user interaction.
filtdemo.m
: Linear filtering of images (low-pass, high-pass, edge-dection).
*Requires the data file
demo1.mat.
histdemo.m
: Image histograms and pixel transformations.
*Requires the data file
demo2.mat.
sampdemo.m
: Image sampling and reconstruction.
*Requires the data file
demo1.mat.
Questions or comments should be sent to:
Prof. Charles A. Bouman, School of Electrical and Computer Engineering, Purdue University, West Lafayette IN 47907; (765) 494-0340; bouman@ecn.purdue.edu