If you like my notes and github repositories, please consider donating to me on PayPal (it’s easy! All you need is an email and to press the PayPal donate button) or at my ernestyalumni.tilt.com crowdfunding campaign. I am committed and on principle, I will keep everything I make and put out open-sourced, open and publicly available to anyone, anywhere, anytime; your help, even as little as $5, would help me create even more value (see the Tilt campaign for my mission and plans and projects to execute).

github 18-327-wavelets-filter-banks

One day on 18 juin 2015, I find myself needing to learn about wavelets, fast.

The first thing I now do when I want to pick up a new skill is to see if the MIT (Massachusetts Institute of Technology) OCW (Open-Course Ware) has a course on it. So far, I’ve seen 18.327 Wavelets, Filter Banks and Applications, taught by Strang and Amaratunga in Spring 2003. I haven’t seen it updated recently. I’ll try to give some updates from my perspective. (Note, this past week, 20150709, I saw that coursera has Computational Methods for Data Analysis; I’ll try to look into that; there’s also Gabriel Payre’s page http://gpeyre.github.io/teaching/. But the problem is that both rely on Matlab code. Payre’s Python code page relies on a Python to Matlab wrapper (you still need Matlab).

Here are some features I want to mention about this exposition on Wavelets:

–**Multiresolution analysis as a filtration of -algebras, with each subspace equipped with a -algebra, , that is an algebra for the coefficients of the -level of resolution scaling function and wavelets.** I explicitly make clear what spaces we are living on and the mapping involved and make explicit the mapping itself in the so-called filter bank representation with commutative diagrams 5.2, 7.1.1. The operations of convolution and downsampling and upsampling on functions are clearly defined as an algebra and the corresponding operations in the so-called z-domain, which is really going to , is also clearly defined and the correspondence or “dictionary” between and clearly shown.

Then, with scaling functions and wavelets in a multiresolution analysis, I define a -algebra, , associated with each subspace , for the -level resolution scaling function and wavelet coefficients. This way, we know exactly which (sub)space ( or , or or ) we are living on at each step of a filter bank and again, the operations of convolution and downsampling and upsampling are reduced to an algebra (which is easy).

–**Explicit association of where concept and theory meets application and code.** *Learning and using wavelets should be as fun as playing video games.* The original MIT OCW 18.327 material does not tell you which piece of code corresponds to directly with which Handout or Lecture. In this pdf/LaTeX file, I do tell you, and being able to directly do the Wavelet transforms and plot them immediately and interactively helps out a lot in learning and using wavelets. Also, all the code is on github, making it more amenable to editing and playing around with, and won’t get dated like the MIT OCW 18.327 materials.

–**Python**. The Matlab Wavelet Toolkit is a black box, as exemplified by the documentation 1. We can do everything we’d want to and more in Python, using the open-source PyWavelets library. With Homebrew and pip, installing packages is easy; I’ve found that installing packages in GNU Octave isn’t as easy.

-Again, I want to emphasize that we are *not trying to reinvent the wheel*. There are plenty of reading material (I should say that the original lectures by Ingrid Daubechies are excellent and lucid, and she founded the field) and plenty of disparate course lecture notes online. This is meant to be the “missing companion manual” to the MIT OCW 18.327 material and to any book or course on or involving Wavelets, building on top of the MIT OCW 18.327 material. (One of) The value of these notes is the closely linked *Python* code, and I want to encourage and foster its use, interactively.

For more exposition (that’d usually go into an “Introduction” section) and the rationale behind all this notes and code, and how you can help, go to the end part of the pdf for the Colophon.

More pictures because pictures are nice to look at:

If you like my notes and github repositories, please consider donating to me on PayPal (it’s easy! All you need is an email and to press the PayPal donate button) or at my ernestyalumni.tilt.com crowdfunding campaign. I am committed and on principle, I will keep everything I make and put out open-sourced, open and publicly available to anyone, anywhere, anytime; your help, even as little as $5, would help me create even more value (see the Tilt campaign for my mission and plans and projects to execute).