This repository collects didactically edited Jupyter notebooks that introduce basic concepts of Digital Signal Processing. Please take a look at the static version for a first glance. The materials provide an introduction into the foundations of spectral analysis, random signals, quantization and filtering. The theory is accompanied by a series of computational examples and exercises written in IPython 3.
The notebooks constitute the lecture notes to the master's course Digital Signal Processing given by Sascha Spors at the University of Rostock, Germany. The contents are provided as Open Educational Resource, so feel free to fork, share, teach and learn. You can give the project a Star if you like it.
The Jupyter notebooks are accessible in various ways
- Online as static web pages
- Online for interactive usage with binder
- Local for interactive usage on your computer
Other online services (e.g. Google Colaboratory, Microsoft Azure, ...) provide environments for interactive execution of Jupyter notebooks as well. Local execution on your computer requires a local Jupyter/IPython installation. The Anaconda distribution can be considered as a convenient starting point. Then, you'd have to clone/download the notebooks from Github. Use a Git client to clone the notebooks and then start your local Jupyter server. For manual installation under OS X/Linux please refer to your packet manager.
An understanding of the underlying mechanisms and the limitations of basic digital signal processing methods is essential for the design of more complex algorithms, such as for example the recent contributions on indirect detection of supermassive black holes heavily relying on system identification and image processing.
The present notebooks cover fundamental aspects of digital signal processing. A focus is laid on a detailed mathematical treatise. The discussion of the mathematical background is important to understand the underlying principles in a more general manner. The materials contain computational examples and exercises to interpret the theoretical findings and foster understanding. The examples are designed to be explored in an interactive manner. Furthermore, an outlook to practical applications is given whenever possible.
The material covers the following topics
- spectral analysis of deterministic signals
- random signals and linear-time invariant systems
- spectral estimation for random signals
- realization of non-recursive and recursive filters
- design of digital filters
The contents are provided as Open Educational Resource. The text is licensed under Creative Commons Attribution 4.0 , the code of the IPython examples under the MIT license. Feel free to use the entire collection, parts or even single notebooks for your own purposes. I am curious on the usage of the provided resources, so feel free to drop a line or report to Sascha.Spors@uni-rostock.de.
Our long-term vision is to lay the grounds for a community driven concise and reliable resource covering all relevant aspects of digital signal processing revised by research and engineering professionals. We aim at linking the strengths of both, the good old-fashioned text books and the interactive playground of computational environments. Open Educational Resources in combination with open source tools (Jupyter, Python) and well-established tools for data literacy (git) provide the unique possibility for collaborative and well-maintained resources. Jupyter has been chosen due to its seamless integration of text, math and code. The contents are represented future prove, as simple markdown layout allows for conversion into many other formats (html, PDF, ...). The git version management system features tracking of the changes and authorship.
You are invited to contribute on different levels. The lowest level is to provide feedback in terms of a Star if you like the contents. Please consider reporting errors or suggestions for improvements as issues. We are always looking forward to new examples and exercises, as well as reformulation of existing and novel sub-sections or sections. Authorship of each considerable contribution will be clearly stated. One way of introducing reformulated and new material is to handle them as a tracked pull request.
The computational examples in the notebooks are automatically build and checked for errors by continuous integration using github actions.