Signals and Systems: Difference between revisions
No edit summary |
|||
(220 intermediate revisions by 35 users not shown) | |||
Line 3: | Line 3: | ||
===Individual Subjects=== |
===Individual Subjects=== |
||
*[[Linear Time |
*[[Linear Time Invariant System|Linear Time Invariant Systems]] |
||
**[[The Game|"The Game"]] |
**[[The Game|"The Game"]] |
||
*[[Orthogonal functions|Orthogonal Functions]] |
*[[Orthogonal functions|Orthogonal Functions]] |
||
**[http://www.youtube.com/watch?v=mhEFJr5qvLo Douglas Harder Lecture on Functions as Vectors] |
|||
*[[Energy in a signal|Finding the Energy in a Signal]] |
*[[Energy in a signal|Finding the Energy in a Signal]] |
||
**[[Rayleigh's Theorem]] |
**[[Rayleigh's Theorem]] |
||
Line 13: | Line 14: | ||
*[[Sampling]] |
*[[Sampling]] |
||
*[[FIR Filter Example]] |
*[[FIR Filter Example]] |
||
*[[Relationship between e, sin and cos]] |
|||
== Some Useful Links to Suppliment or Substitute for a Textbook == |
|||
===Books on Signal Processing=== |
|||
*[https://ccrma.stanford.edu/~jos/sasp/sasp.html Spectral Audio Signal Processing, by Julius O. Smith III] |
|||
*[http://www.dspguide.com/ The Scientist and Engineer's Guide to Digital Signal Processing by Steven W. Smith, Ph.D.] The professor likes this one. |
|||
*[http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-003-signals-and-systems-spring-2010/readings/ Discrete Time Signals & Systems] |
|||
*[http://sar.kangwon.ac.kr/gisg/FFT_book.pdf The Fast Fourier Transform by E. O. Brigham] This was one of the professor's textbooks when he took this class. |
|||
*[http://faculty.uml.edu/cbyrne/SP1text.pdf Mathematics of Signal Processing: A First Course, by Charles L. Byrne] Good chapters on Computer Aided Tomography (CAT Scan) as well as a lot of other interesting things. |
|||
*[http://www.orchardpublications.com/9781934404232ex.pdf Signals & Systems, with MATLAB/Simulink, Karris] |
|||
===Fourier Series=== |
|||
*[http://www.intmath.com/Fourier-series/Fourier-intro.php Interactive Mathematics (like a textbook with some examples)] |
|||
*[http://mathworld.wolfram.com/FourierSeries.html Mathworld] |
|||
*[http://en.wikipedia.org/wiki/Fourier_series Wikipedia] |
|||
*[http://web.mit.edu/2.14/www/Handouts/FreqDom.pdf MIT handout on Fourier Series, Fourier Transform, and Laplace Transform] |
|||
*[http://www.maths.mq.edu.au/~bon/Fourier%20Theory.pdf Fourier Theory B..M..N.. Clarke] |
|||
===Dirac Delta Function and Convolution=== |
|||
*[http://web.mit.edu/2.14/www/Handouts/Convolution.pdf MIT handout on Dirac Delta Function and Convolution] |
|||
*[http://homedir.jct.ac.il/~shlomoe/Public/LinSysStuff/IntroLinSys.pdf Linear Time Invariant Systems by Shlomo Engelberg] |
|||
===Multi-rate Filtering=== |
|||
[https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC4QFjAA&url=http%3A%2F%2Fwww.mds.com%2Fsystem%2Fresources%2FBAhbBlsHOgZmIjIyMDExLzA1LzAzLzEyLzI0LzM5LzQ4Ny9tdWx0aXJhdGVfYXJ0aWNsZS5wZGY%2Fmultirate_article.pdf&ei=zSalUoGrK4nsoATOl4DQCQ&usg=AFQjCNGTQ9MYLLQE6D4ay_pDlGzShSA1uw&sig2=geMUjuDMkKvs79FrwJeeQg&bvm=bv.57752919,d.cGU Multirate Filters Introduction] |
|||
[http://www.ws.binghamton.edu/fowler/fowler%20personal%20page/EE521_files/IV-05%20Polyphase%20FIlters_2007.pdf Slides from a Presentation on Polyphase Decimation and Interpolation by Mark Fowler] |
|||
===FIR Filters=== |
|||
*[http://www.dspguru.com/dsp/faqs/fir This is a very easy-to-understand summary of FIR basics, properties, design, and implementation] |
|||
*[http://www.dspguru.com/dsp/faqs/multirate/decimation Another easy-to-understand article about decimation] |
|||
*[http://www.dspguru.com/dsp/faqs/multirate/interpolation Another easy-to-understand article about interpolation] |
|||
*[http://inst.eecs.berkeley.edu/~ee123/fa11/docs/FastConv.pdf Fast Convolution Based on the FFT] This reference shows how end effects are dealt with. To use the FFT for convolution, you need to do it in blocks, which leads to end effects, and more latency, but if your blocks are big enough, it speeds up the convolution. |
|||
*The truncated Fourier series or DFT method of FIR filter design gives the best approximation of the desired frequency response in a least squared error sense, but it is not very good near discontinuities. [http://itee.uq.edu.au/~elec4600/elec4600_lectures/1perpage/lectremez.pdf The Parks-McClellan] (Remez) iterative algorithm gives equal ripple in the pass band and stop band. This is the best in terms of minimizing the maximum error in each area, which is usually better in the real world. MATLAB/octave have automated functions to do that. See [http://octave.sourceforge.net/signal/function/remez.html remez() in the Signals package of octave.] |
|||
*[http://eeweb.poly.edu/iselesni/EL713/remez/ A nice detailed description of the Parks McClellan algorithm with MATLAB/octave code.] |
|||
*[https://www.youtube.com/watch?v=bmOvHjSBlnc This is a nice demo of using a head related impulse response and FIR filters to give sound a nice 3D effect.] |
|||
*[http://recherche.ircam.fr/equipes/salles/listen/index.html Listen Head Related Transfer Function (HRTF) Database] |
|||
**[http://recherche.ircam.fr/equipes/salles/listen/sounds.html Selection of binaural sounds processed through different head related transfer functions.] You can pick the HRTF that is closest to your own here. |
|||
===Adaptive FIR Filters=== |
|||
[https://www.youtube.com/watch?v=dE-pOYuu6go Your professor's cheesy video to explain Adaptive FIR Filters] |
|||
[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.42.6386&rep=rep1&type=pdf Introduction to Adaptive Filters, Simon Haykin] |
|||
[http://saba.kntu.ac.ir/eecd/taghirad/E%20books/TOC/Adaptive%20Filters.pdf Simon Haykin's book chapter] |
|||
[http://www.latticesemi.com/documents/doc22982x20.pdf?jsessionid=f0308ccf0f735471e49a6054323c5c177969 Adaptive LMS in an FPGA] |
|||
[http://dsp-book.narod.ru/DSPMW/18.PDF Scott Douglas' chapter on Adaptive Filters has some interesting applications, among them linear predictive coding (LPC) used in speech codecs.] |
|||
[[Adaptive Filters In the Frequency Domain]] |
|||
[http://www.iro.umontreal.ca/~mignotte/IFT3205/Documents/Applications/220.pdf Adaptive Filter Echo Cancellation] |
|||
[http://www.mathworks.com/help/dsp/ug/overview-of-adaptive-filters-and-applications.html Adaptive Filters and Applications (Mathworks)] |
|||
[http://www.dspalgorithms.com/aspt/asptnode26.html More Applications of Adaptive Filters] |
|||
====Constant Modulus Algorythm==== |
|||
[http://ens.ewi.tudelft.nl/Education/courses/et4147/sheets/cma_leus.pdf Using the CMA on antenna arrays] |
|||
===Math Editors for Your Notebook=== |
|||
You can make your notebook here on the wiki, but there are other options, including things like writing you notes on paper and using photo processing software to make notes like the [http://people.wallawalla.edu/~Rob.Frohne/ClassNotes/engr455index.htm old class notes]. You can also make screencasts or videos for your notebook. |
|||
*[https://jupyterlab.readthedocs.io/en/stable/ JupyterLab:] This is my current favorite for making notebooks with a "literate programming" approach. It allows you to mix prose and other things with your equations in LaTex or python or octave code that illustrate the concepts. |
|||
*LaTex: I suggest opening opening the following [http://www.math.duke.edu/computing/tex/templates/samplefile.tex sample file] with any of the LaTex editors below. LaTex is a document processing language that you compile like C or other compiled languages. It does produce the nicest looking documents, but it takes a bit of expertise to do that. If you are bound for graduate school, it is well worth learning. |
|||
**[http://www.texstudio.org/ TexStudio] works with Windows, Linux, and OS X, has a previewer, menus to help newbies, and is about the most featured LaTex editor I have tried. |
|||
**[http://www.xm1math.net/texmaker/ Texmaker] is a LaTex editor with preview and a bunch of menus that help to figure out what you need to type to get the effects you want. It works on Linux, Windows, and OS X. |
|||
**[https://en.wikipedia.org/wiki/Gummi_(software) Gummi] is a LaTex editor with preview for Linux and Windows. |
|||
**[https://www.codecogs.com/latex/eqneditor.php Online LaTeX Editor] especially for equations. This is useful for other systems that take LaTex input when you don't know LaTex yet. |
|||
*[http://lurchmath.org/ Lurch] is a math editor for your desktop that will check your logic. For this class it is primarily useful as an easy editor for mathematical subjects. |
|||
*[https://andrejv.github.io/wxmaxima/index.html wxMaxima] is a document based GUI for the Maxima computer algebra system. You can do quite a bit of algebra and calculus in wxMaxima. The notebooks it produces look good, but not as good as LaTex documents, however, you can easily change them, and it will redo all the math with the changes. I found a [https://bugs.launchpad.net/ubuntu/+source/wxmaxima/+bug/1311770 bug] in the version that come with Ubuntu 15.04 where it segfaults when you type in a parenthesis to one of the helpful windows that come up when using the menus. I solved it by using the [https://launchpad.net/~peterpall/+archive/ubuntu/wxmaxima-nightlies nightly builds] from Peter Pall. As with most of the tools here, it will [http://www.matrix44.net/blog/?p=1029 integrate in with LaTex]. |
|||
*[http://www.sagemath.org/ SageMath] is a computer algebra system similar to wxMaxima that uses python, maxima and other tools to make a very nice and powerful tool for making a notebook. In order to make it work with the octave kernel, I had to use the latest version, which I obtained at [https://help.ubuntu.com/community/SAGE the Ubuntu Sage wiki] where I the instructions to install the upstream binary like this: |
|||
sudo apt-add-repository -y ppa:aims/sagemath |
|||
sudo apt-get update |
|||
sudo apt-get install sagemath-upstream-binary |
|||
*[https://cloud.sagemath.com SageMath on the cloud] uses sage (a computer algebra system) and latex to make your document. It has a nice preview that shows you what you get with your LaTex code. It also has a Linux terminal that you can use for octave and other things. You can create all kinds of files. It works well with the online LaTex editor below. |
|||
**[http://www.sagemath.org/help-video.html Some SageMath Videos] I found the two Introduction videos very useful. |
|||
*[http://www.ptc.com/engineering-math-software/mathcad?ab_eid=491&ab_vid=94189&gclid=CjwKEAjw1f6vBRC7tLqO_aih5WISJAAE0CYwihsuWeadsqwBL38_IQofPffXZUCfFMmau725f_zk-BoCbkrw_wcB PTC Mathcad] works for Windows and costs something, but is available on the campus network. |
|||
*LibreOffice is an open source word processor. |
|||
*Microsoft Word is a fancy word processor that I think you can get for free or minimal cost when you are a WWU student. |
|||
*[https://www.maplesoft.com Maple] is a commercial symbolic mathematics package similar to maxima. It will do notebooks. It is available on the school network. |
|||
*[https://www.wolfram.com/mathematica/ Mathematica] is another commercial symbolic software package. I don't think it is available on the school network. |
|||
*[https://www-fourier.ujf-grenoble.fr/~parisse/giac.html Xcas is my current favorite open source alternative to Maple or Mathematica.] Xcas uses syntax compatible with the TI-89, or Maple, or muPad, or the TI NSpire CAS or Voyager 200. It runs on Windows, Linux, or OS X and is also available on Android for your phone, and I use it that way sometimes too. It is based on Giac which was chosen for the recent fancy HP CAS calculator, and for [https://www.geogebra.org/ Geogebra]. |
|||
===Course Pages=== |
===Course Pages=== |
||
Line 19: | Line 108: | ||
[[2006-2007 Assignments]] |
[[2006-2007 Assignments]] |
||
[[2008-2009 Assignments]] |
|||
[http://www.wwc.edu/~frohro/ClassNotes/engr455index.htm Class notes for Signals & Systems] |
|||
[[2009-2010 Assignments]] |
|||
[http://people.wallawalla.edu/~Rob.Frohne/ClassNotes/engr455index.htm Class notes for Signals & Systems] |
|||
==Articles== |
|||
[[User:Frohro|Instructor: Rob Frohne]] |
|||
===Octave Tutorials and Scripts for Learning=== |
|||
==2004-2005 contributors== |
|||
====Octave Scripts for Learning==== |
|||
[[An octave/MATLAB u(t) function example]] |
|||
[[User:Barnsa|Sam Barnes]] |
|||
[[An octave/MATLAB RC circuit example with Fourier series]] that shows how to use the ideas of the linear time invariant systems game and phasors to find the output due to a square wave input |
|||
[[User:Santsh|Shawn Santana]] |
|||
[[An octave/MATLAB script to show the relation]]: <math>\int_{-\infty}^\infty e^{j2\pi ft} df = \delta(t)</math> |
|||
[[User:Goeari|Aric Goe]] |
|||
[[An octave/MATLAB script to show the Fourier series of a string of impulse functions]] is given by: <math>\sum_{k=-\infty}^\infty \delta(t-kT) = \sum_{k=-\infty}^\infty e^{-j2\pi kt/T}</math> |
|||
[[User:Caswto|Todd Caswell]] |
|||
[[This octave/MATLAB script shows the effect of not sampling fast enough.]] You can also see how the bandpass sampling theorem works from the plot this produces if you are clever. |
|||
[[User:Andeda|David Anderson]] |
|||
[[A octave/MATLAB script to show how Nyquist's formula]] for <math>x(t)</math> in terms of sample points <math>x(nT)</math> |
|||
[[User:Guenan|Anthony Guenterberg]] |
|||
An [[FIR Filter Example Code for Octave]]/MATLAB |
|||
==2005-2006 contributors== |
|||
[[Demonstration of an Oversampling FIR Filter]] |
|||
[[User:GabrielaV|Gabriela Valdivia]] |
|||
[[FIR Filter Design and Testing Using the DFT]] |
|||
[[User:SDiver|Raymond Betz]] |
|||
[[Leakage Example Octave Script]] |
|||
[[User:chrijen|Jenni Christensen]] |
|||
[[Interpolation using the DFT Example Script]] |
|||
[[User:wonoje|Jeffrey Wonoprabowo]] |
|||
[[An example showing how convolution is just a dot product]] or matrix multiply |
|||
[[User:wilspa|Paul Wilson]] |
|||
[[Tuner Upper Removal Demonstration]] |
|||
[[Airplane Noise Removal Demonstration]] |
|||
====Octave/MATLAB Tutorials==== |
|||
[http://people.duke.edu/~hpgavin/matlab.html A nice list of MATLAB tutorials from Duke University] |
|||
[http://octave-online.net/ Online Octave] This works in your browser. |
|||
[[Installing Octave on a Mac]] (Chris Lau) |
|||
[[Octave and Scilab on a Mac]] (Ben Henry) |
|||
[[Installing Octave (with the GUI) from source on Ubuntu]] |
|||
[[ASN2 - Octave Tutorial]] (Jodi S. Hodge) |
|||
===Python Examples=== |
|||
[[FFT Example]] |
|||
===Final Project (2011)=== |
|||
[[Matlab/Octave deMorse.m]] |
|||
[[morse.m This is the one from mathworks]] |
|||
===[[Table of Fourier Transform Properties]]=== |
|||
==Homework Assignments== |
|||
Please put your name next to the assignment, linking it to your submission |
|||
* HW #1 - Make a personal page on this wiki ([[Christopher Garrison Lau I|Chris Lau]])([[Jodi S. Hodge]])([[user:chris.wills|Chris Wills]])[[Shepherd,Victor|(Victor Shepherd)]] |
|||
* HW #2 - Write a tutorial about installing and/or using Octave ([[Installing Octave on a Mac|Chris Lau]])([[Jodi S. Hodge]])([[Octave|Victor Shepherd]]) |
|||
* HW #3 - Show graphically that <math> \int_{-\infty}^{\infty} e^{j2\pi f(t-u)}\, df = \delta (t-u)</math> ([[HW 3|Chris Lau]])([[Jodi S. Hodge]])([[user:chris.wills/HW3|Chris Wills]])([[Hw3|Victor Shepherd)]] |
|||
* HW #4 - Given a linear time-invariant system where <math>\ u(t) </math> produces an output <math>\ w(t) </math>, find the output due to any function <math>\ x(t) </math> ([[HW 4|Chris Lau]]) |
|||
* HW #5: ([[HW 5|Chris Lau]]) |
|||
** Part 1 - Find <math> \mathcal{F}[e^{- \sigma t} x(t)u(t)] </math> and relate it to the Laplace Transform. Derive the Inverse Laplace Transform of this from the inverse Fourier Transform. |
|||
** Part 2 - [[Image:20101006KeyDSCN3161.jpg|thumb|300px|center]] |
|||
* HW #6 - Pick a property of the Fourier Transform & present it on the Wiki. Make a table with all your properties. Interpret your property. ([[HW 6|Ben Henry]])([[Table of Fourier Transform Properties|Chris Lau]])([[Table of Fourier Transform Properties|Victor Shepherd]]) |
|||
* HW #7 - Finish the practice tests |
|||
* HW #8 - Make a page about interpolating FIR filters. Note how many multiply/add operations.([[Jodi S. Hodge]])([[Interpolating FIR filters|Chris Lau]])([[Hw8|Victor Shepherd]]) |
|||
* HW #9 - Add to #8 writeup how to do a decimating filter and figure out how many multiply & adds are needed for a $$ n/2 $$ decimating low pass filter.([[Jodi S. Hodge]])([[Decimating FIR filters|Chris Lau]])([[Hw9|Victor Shepherd)]] |
|||
* HW #10 - Use Octave (or Mathlab or Silab) to plot the frequency response of low pass filters with cut-off frequencies of 1/32T, 1/8T, and 1/4T and compare how many coefficients are needed with an eye to answer the question "Is it less calculation to decimate and then filter, or better to put the filter in the pre-decimation filter?" ([[Jodi S. Hodge]])([[Hw10|Victor Shepherd)]] |
|||
* HW #11 - Is our method the same as Mark Fowler's? See |
|||
[http://www.ws.binghamton.edu/fowler/fowler%20personal%20page/EE521_files/IV-05%20Polyphase%20FIlters_2007.pdf Wiki]. Same # multiply and adds? See Notes 11/3/10. ([[Jodi S. Hodge]])([[Hw11|Victor Shepherd)]] |
|||
* HW #12 - Experiment with a variety of signals having a 3Khz bandwidth to determine the resolution you can get when doing a cross correlation <math> \ r(m) = |
|||
\displaystyle\sum\limits_{n=0}^{N-1} x(n) x(n+m) </math>. You can generate the signals randomly and filter them to obtain the band-limited signals. ([[Jodi S. Hodge]]) |
|||
* HW #13 - Derive the following relations: |
|||
**a) <math>DFT(x(k-l))\!</math> |
|||
**b) <math> DFT(e^{j2 \pi lk/N}x(k)\!</math> |
|||
**c) <math>\sum\limits_{k=0}^{N-1} x(k)y(k)^{*}=c\sum\limits_{k=0}^{N-1} X(n)Y(n)^{*}</math> ([[Hw13|Victor Shepherd)]] |
|||
* HW #14 - Come up with a use for an adaptive FIR filter and make an Octave script to demonstrate it. ([[Jodi S. Hodge]])([[Hw14|Victor Shepherd)]] |
|||
* HW #15 - Do Practice Exam II ([[Hw15|Victor Shepherd)]] |
|||
* [[CW-Robot Octave Simulation]] |
|||
==People Involved with this Wiki== |
|||
===2013-2014 Contributors=== |
|||
[[Brian Lenz]] |
|||
[[Brian Clark]] |
|||
[[Daniel Liwag]] |
|||
[[Alex Haesche]] |
|||
===2012-2013 Contributors=== |
|||
[[Brian Haddad]] |
|||
[[Kurt Hildebrand]] |
|||
[[Denver Lodge]] |
|||
[[User:michael.vonpohle|Michael von Pohle]] |
|||
===2011-2012 Contributors=== |
|||
[[Matthew Blaire]] |
|||
[[Cody Lorenz]] |
|||
===2010-2011 Contributors=== |
|||
[[Ben Henry|Ben Henry]] |
|||
[[Christopher Garrison Lau I]] |
|||
[[user:chris.wills|Chris Wills]] |
|||
[[Jodi S. Hodge]] |
|||
[[Luke Chilson]] |
|||
[[Shepherd,Victor|Victor Shepherd]] |
|||
===2009-2010 Contributors=== |
|||
[[Nick Christman]] |
|||
[[Joshua Sarris]] |
|||
[[Kevin Starkey]] |
|||
[[Max Woesner]] |
|||
[[Jodi Hodge]] |
|||
[[Corneliu Turturica]] |
|||
===2008-2009 Contributors=== |
|||
[[User:eric.clay|Eric Clay]] |
|||
[[User:tsung-lin.yang|Chuck Yang]] |
|||
[[User:elton.zebron|Elton Zebron]] |
|||
[[User:Luke.chilson|Luke Chilson]] |
|||
[[User:Brandon.price|Brandon Price]] |
|||
[[User:Fonggr|Greg Fong]] |
|||
===2007-2008 contributors=== |
|||
[[User:baldwin.britton|Baldwin Britton]] |
|||
[[User:Harrde|Denver Harris]] |
|||
[[User:Pridma|Mark Priddy]] |
|||
[[User:ChrisRas|Chris Rasmussen]] |
|||
[[User:RothMi|Michael Roth]] |
|||
[[User:Rothsa|Sally Roth]] |
|||
==2006-2007 contributors== |
===2006-2007 contributors=== |
||
[[User:Smitry|Ryan J Smith]] |
[[User:Smitry|Ryan J Smith]] |
||
Line 63: | Line 291: | ||
[[User:Adkich|Chris Adkins]] |
[[User:Adkich|Chris Adkins]] |
||
== |
===2005-2006 contributors=== |
||
[[User: |
[[User:GabrielaV|Gabriela Valdivia]] |
||
[[User:SDiver|Raymond Betz]] |
|||
[[User:chrijen|Jenni Christensen]] |
|||
[[User:wonoje|Jeffrey Wonoprabowo]] |
|||
[[User:wilspa|Paul Wilson]] |
|||
[[User:Frohro|Instructor: Rob Frohne]] |
|||
===2004-2005 contributors=== |
|||
[[User:Barnsa|Sam Barnes]] |
|||
[[User:Santsh|Shawn Santana]] |
|||
[[User:Goeari|Aric Goe]] |
|||
[[User:Caswto|Todd Caswell]] |
|||
[[User:Andeda|David Anderson]] |
|||
[[User:Guenan|Anthony Guenterberg]] |
Latest revision as of 21:25, 11 January 2023
Topics
Overview of Signals and Systems
Individual Subjects
- Linear Time Invariant Systems
- Orthogonal Functions
- Finding the Energy in a Signal
- Fourier Series
- Fourier Transforms
- Sampling
- FIR Filter Example
- Relationship between e, sin and cos
Some Useful Links to Suppliment or Substitute for a Textbook
Books on Signal Processing
- Spectral Audio Signal Processing, by Julius O. Smith III
- The Scientist and Engineer's Guide to Digital Signal Processing by Steven W. Smith, Ph.D. The professor likes this one.
- Discrete Time Signals & Systems
- The Fast Fourier Transform by E. O. Brigham This was one of the professor's textbooks when he took this class.
- Mathematics of Signal Processing: A First Course, by Charles L. Byrne Good chapters on Computer Aided Tomography (CAT Scan) as well as a lot of other interesting things.
- Signals & Systems, with MATLAB/Simulink, Karris
Fourier Series
- Interactive Mathematics (like a textbook with some examples)
- Mathworld
- Wikipedia
- MIT handout on Fourier Series, Fourier Transform, and Laplace Transform
- Fourier Theory B..M..N.. Clarke
Dirac Delta Function and Convolution
- MIT handout on Dirac Delta Function and Convolution
- Linear Time Invariant Systems by Shlomo Engelberg
Multi-rate Filtering
Multirate Filters Introduction
Slides from a Presentation on Polyphase Decimation and Interpolation by Mark Fowler
FIR Filters
- Fast Convolution Based on the FFT This reference shows how end effects are dealt with. To use the FFT for convolution, you need to do it in blocks, which leads to end effects, and more latency, but if your blocks are big enough, it speeds up the convolution.
- The truncated Fourier series or DFT method of FIR filter design gives the best approximation of the desired frequency response in a least squared error sense, but it is not very good near discontinuities. The Parks-McClellan (Remez) iterative algorithm gives equal ripple in the pass band and stop band. This is the best in terms of minimizing the maximum error in each area, which is usually better in the real world. MATLAB/octave have automated functions to do that. See remez() in the Signals package of octave.
- A nice detailed description of the Parks McClellan algorithm with MATLAB/octave code.
- This is a nice demo of using a head related impulse response and FIR filters to give sound a nice 3D effect.
- Listen Head Related Transfer Function (HRTF) Database
- Selection of binaural sounds processed through different head related transfer functions. You can pick the HRTF that is closest to your own here.
Adaptive FIR Filters
Your professor's cheesy video to explain Adaptive FIR Filters
Introduction to Adaptive Filters, Simon Haykin
Adaptive Filters In the Frequency Domain
Adaptive Filter Echo Cancellation
Adaptive Filters and Applications (Mathworks)
More Applications of Adaptive Filters
Constant Modulus Algorythm
Using the CMA on antenna arrays
Math Editors for Your Notebook
You can make your notebook here on the wiki, but there are other options, including things like writing you notes on paper and using photo processing software to make notes like the old class notes. You can also make screencasts or videos for your notebook.
- JupyterLab: This is my current favorite for making notebooks with a "literate programming" approach. It allows you to mix prose and other things with your equations in LaTex or python or octave code that illustrate the concepts.
- LaTex: I suggest opening opening the following sample file with any of the LaTex editors below. LaTex is a document processing language that you compile like C or other compiled languages. It does produce the nicest looking documents, but it takes a bit of expertise to do that. If you are bound for graduate school, it is well worth learning.
- TexStudio works with Windows, Linux, and OS X, has a previewer, menus to help newbies, and is about the most featured LaTex editor I have tried.
- Texmaker is a LaTex editor with preview and a bunch of menus that help to figure out what you need to type to get the effects you want. It works on Linux, Windows, and OS X.
- Gummi is a LaTex editor with preview for Linux and Windows.
- Online LaTeX Editor especially for equations. This is useful for other systems that take LaTex input when you don't know LaTex yet.
- Lurch is a math editor for your desktop that will check your logic. For this class it is primarily useful as an easy editor for mathematical subjects.
- wxMaxima is a document based GUI for the Maxima computer algebra system. You can do quite a bit of algebra and calculus in wxMaxima. The notebooks it produces look good, but not as good as LaTex documents, however, you can easily change them, and it will redo all the math with the changes. I found a bug in the version that come with Ubuntu 15.04 where it segfaults when you type in a parenthesis to one of the helpful windows that come up when using the menus. I solved it by using the nightly builds from Peter Pall. As with most of the tools here, it will integrate in with LaTex.
- SageMath is a computer algebra system similar to wxMaxima that uses python, maxima and other tools to make a very nice and powerful tool for making a notebook. In order to make it work with the octave kernel, I had to use the latest version, which I obtained at the Ubuntu Sage wiki where I the instructions to install the upstream binary like this:
sudo apt-add-repository -y ppa:aims/sagemath sudo apt-get update sudo apt-get install sagemath-upstream-binary
- SageMath on the cloud uses sage (a computer algebra system) and latex to make your document. It has a nice preview that shows you what you get with your LaTex code. It also has a Linux terminal that you can use for octave and other things. You can create all kinds of files. It works well with the online LaTex editor below.
- Some SageMath Videos I found the two Introduction videos very useful.
- PTC Mathcad works for Windows and costs something, but is available on the campus network.
- LibreOffice is an open source word processor.
- Microsoft Word is a fancy word processor that I think you can get for free or minimal cost when you are a WWU student.
- Maple is a commercial symbolic mathematics package similar to maxima. It will do notebooks. It is available on the school network.
- Mathematica is another commercial symbolic software package. I don't think it is available on the school network.
- Xcas is my current favorite open source alternative to Maple or Mathematica. Xcas uses syntax compatible with the TI-89, or Maple, or muPad, or the TI NSpire CAS or Voyager 200. It runs on Windows, Linux, or OS X and is also available on Android for your phone, and I use it that way sometimes too. It is based on Giac which was chosen for the recent fancy HP CAS calculator, and for Geogebra.
Course Pages
Class notes for Signals & Systems
Articles
Octave Tutorials and Scripts for Learning
Octave Scripts for Learning
An octave/MATLAB u(t) function example
An octave/MATLAB RC circuit example with Fourier series that shows how to use the ideas of the linear time invariant systems game and phasors to find the output due to a square wave input
An octave/MATLAB script to show the relation:
An octave/MATLAB script to show the Fourier series of a string of impulse functions is given by:
This octave/MATLAB script shows the effect of not sampling fast enough. You can also see how the bandpass sampling theorem works from the plot this produces if you are clever.
A octave/MATLAB script to show how Nyquist's formula for in terms of sample points
An FIR Filter Example Code for Octave/MATLAB
Demonstration of an Oversampling FIR Filter
FIR Filter Design and Testing Using the DFT
Interpolation using the DFT Example Script
An example showing how convolution is just a dot product or matrix multiply
Tuner Upper Removal Demonstration
Airplane Noise Removal Demonstration
Octave/MATLAB Tutorials
A nice list of MATLAB tutorials from Duke University
Online Octave This works in your browser.
Installing Octave on a Mac (Chris Lau)
Octave and Scilab on a Mac (Ben Henry)
Installing Octave (with the GUI) from source on Ubuntu
ASN2 - Octave Tutorial (Jodi S. Hodge)
Python Examples
Final Project (2011)
morse.m This is the one from mathworks
Table of Fourier Transform Properties
Homework Assignments
Please put your name next to the assignment, linking it to your submission
- HW #1 - Make a personal page on this wiki (Chris Lau)(Jodi S. Hodge)(Chris Wills)(Victor Shepherd)
- HW #2 - Write a tutorial about installing and/or using Octave (Chris Lau)(Jodi S. Hodge)(Victor Shepherd)
- HW #3 - Show graphically that (Chris Lau)(Jodi S. Hodge)(Chris Wills)(Victor Shepherd)
- HW #4 - Given a linear time-invariant system where produces an output , find the output due to any function (Chris Lau)
- HW #5: (Chris Lau)
- Part 1 - Find and relate it to the Laplace Transform. Derive the Inverse Laplace Transform of this from the inverse Fourier Transform.
- Part 2 -
- HW #6 - Pick a property of the Fourier Transform & present it on the Wiki. Make a table with all your properties. Interpret your property. (Ben Henry)(Chris Lau)(Victor Shepherd)
- HW #7 - Finish the practice tests
- HW #8 - Make a page about interpolating FIR filters. Note how many multiply/add operations.(Jodi S. Hodge)(Chris Lau)(Victor Shepherd)
- HW #9 - Add to #8 writeup how to do a decimating filter and figure out how many multiply & adds are needed for a $$ n/2 $$ decimating low pass filter.(Jodi S. Hodge)(Chris Lau)(Victor Shepherd)
- HW #10 - Use Octave (or Mathlab or Silab) to plot the frequency response of low pass filters with cut-off frequencies of 1/32T, 1/8T, and 1/4T and compare how many coefficients are needed with an eye to answer the question "Is it less calculation to decimate and then filter, or better to put the filter in the pre-decimation filter?" (Jodi S. Hodge)(Victor Shepherd)
- HW #11 - Is our method the same as Mark Fowler's? See
Wiki. Same # multiply and adds? See Notes 11/3/10. (Jodi S. Hodge)(Victor Shepherd)
- HW #12 - Experiment with a variety of signals having a 3Khz bandwidth to determine the resolution you can get when doing a cross correlation . You can generate the signals randomly and filter them to obtain the band-limited signals. (Jodi S. Hodge)
- HW #13 - Derive the following relations:
- a)
- b)
- c) (Victor Shepherd)
- HW #14 - Come up with a use for an adaptive FIR filter and make an Octave script to demonstrate it. (Jodi S. Hodge)(Victor Shepherd)
- HW #15 - Do Practice Exam II (Victor Shepherd)
- CW-Robot Octave Simulation