We may earn an affiliate commission when you visit our partners.
Mike X Cohen

Why you need to learn digital signal processing.

Nature is mysterious, beautiful, and complex. Trying to understand nature is deeply rewarding, but also deeply challenging. One of the big challenges in studying nature is data analysis. Nature likes to mix many sources of signals and many sources of noise into the same recordings, and this makes your job difficult.

Therefore, one of the most important goals of time series analysis and signal processing is to denoise: to separate the signals and noises that are mixed into the same data channels.

Read more

Why you need to learn digital signal processing.

Nature is mysterious, beautiful, and complex. Trying to understand nature is deeply rewarding, but also deeply challenging. One of the big challenges in studying nature is data analysis. Nature likes to mix many sources of signals and many sources of noise into the same recordings, and this makes your job difficult.

Therefore, one of the most important goals of time series analysis and signal processing is to denoise: to separate the signals and noises that are mixed into the same data channels.

The big idea of DSP (digital signal processing) is to discover the mysteries that are hidden inside time series data, and this course will teach you the most commonly used discovery strategies.

What's special about this course?

The main focus of this course is on implementing signal processing techniques in MATLAB and in Python. Some theory and equations are shown, but I'm guessing you are reading this because you want to implement DSP techniques on real signals, not just brush up on abstract theory.

The course comes with over 10,000 lines of MATLAB and Python code, plus sample data sets, which you can use to learn from and to adapt to your own coursework or applications.

In this course, you will also learn how to simulate signals in order to test and learn more about your signal processing and analysis methods.

You will also learn how to work with noisy or corrupted signals.

Are there prerequisites?

You need some programming experience. I go through the videos in MATLAB, and you can also follow along using Octave (a free, cross-platform program that emulates MATLAB). I provide corresponding Python code if you prefer Python. You can use any other language, but you would need to do the translation yourself.

I recommend taking my Fourier Transform course before or alongside this course. However, this is not a requirement, and you can succeed in this course without taking the Fourier transform course.

What should you do now?

Watch the sample videos, and check out the reviews of my other courses many of them are "best-seller" or "top-rated" and have lots of positive reviews. If you are unsure whether this course is right for you, then feel free to send me a message. I hope you to see you in class.

Enroll now

What's inside

Syllabus

Introductions

It's all in your head. Really.

If you have MATLAB available, that's the best way to follow this course.

Online Octave is also great.

Read more

Python is fine as well.

Have fun filtering beautiful music, and get excited for what you'll learn throughout the course!

Link to the github repository with all code and data files for this video.

A philosophical discussion about using your own code, others code, or a mixture.

Using Udemy like a pro
Time series denoising

MATLAB and Python code for this section.

The mean-smoothing filter is a simple yet effective denoising tool.

Like the mean-smoothing filter, but smoothier.

Application of Gaussian-smoothing filter to spike time series.

Reduce noise and enhance signal by converting to TKEO energy.

Eliminate spike artifacts using the threshold-median filter.

Got a trend? Remove it by detrending!

Disappointed with linear trends? Try the nonlinear variety!

Strength in numbers.

Use least-squares projection to remove an artifact.

Apply your skills to solve the mystery!

Spectral and rhythmicity analyses

Download the zip!

A quick intro to what you need to know about the Fourier transform.

Examples of the FFT for spectral analyses.

Increase SNR for non-stationary signals.

What does a birdsong look like?

Apply your skills to solve this mystery!

Working with complex numbers

Zip file with all code files for this section.

1D numbers are for kids. Welcome to the adult numbers.

Adding complex numbers works how you think it should.

Multiplying complex numbers is not what you probably think!

How to get to the upside down.

Use the complex conjugate to simplify your life.

Intersection of complex numbers and trigonometry.

Filtering

This video provides an introduction to this entire section. Don't skip it!

Design FIR filters using the firls kernel function.

Can't count to 6? Use fir1 instead!

IIR filters are smooth. Just like butter.

Does time flow forwards or backwards? Or both?

Learn how to use reflection to avoid those pesky edge effects!

Identify and resolve a problem with short data sequences.

Let the slow-pokes through.

sin(x)/x: The. Best. Function. Ever.

Take the fast lane to signal processing!

See the importance of appropriate parameter selections!

The better way to filter across a "wide" frequency band.

Learn one way to characterize FIR and IIR filters.

Application of super-narrow notch filters for removing pesky electrical artifacts.

Use temporal filtering to separate different sources of signals.

Convolution

Learn how to implement convolution in the time domain.

See convolution implemented in code.

Sometimes, truth is stranger than fiction.

All roads lead to Rome.

Thinking about convolution as spectral multiplication

Example of convolution for signal processing.

Wavelet analysis

Introduction to wavelets and some examples of common wavelets.

See what happens when you convolve a signal with wavelets.

Scientific publication about defining Morlet wavelets

Morlet wavelets are great for narrowband filtering.

Complex wavelets can be used for time-frequency analysis.

Link to youtube channel with 3 hours of relevant material
MATLAB: Time-frequency analysis with complex wavelets

See an example of time-frequency analysis in real data.

Resampling, interpolating, extrapolating

Unsatisfied with how much data you have? Upsample to get more!

Uh oh, too much data? Try downsampling!

How to deal with multivariate signals that have different sampling rates.

Missing data? No worries, just interpolate!

Irregular sampling rate? Watch this video to find out what to do!

To infinity, and beyond!

Interpolate based on smooth transitions in frequency.

See how similar two signals can get!

Outlier detection

Download the zip file!

Identify outliers based on extreme standard deviation.

For non-stationary time series, a "global" threshold might not work.

Identify and remove excessively noisy time windows.

Feature detection

Identifying local extrema is not as trivial as you might think!

Convert noise into signal.

Application of convolution for automatic feature extraction and averaging.

Bringing some elementary calculus into signal processing.

Application of feature detection for muscle movements.

Save this course

Save Signal processing problems, solved in MATLAB and in Python to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Signal processing problems, solved in MATLAB and in Python with these activities:
Review Fourier Transforms
Reinforce your understanding of Fourier Transforms, which are fundamental to spectral analysis and filtering techniques covered in the course.
Browse courses on Fourier Transform
Show steps
  • Review the definition of the Fourier Transform.
  • Work through examples of calculating Fourier Transforms.
  • Practice identifying frequency components in simple signals.
Read 'Understanding Digital Signal Processing' by Steven W. Smith
Gain a deeper understanding of the underlying principles of digital signal processing.
Show steps
  • Read the chapters relevant to the course topics.
  • Work through the examples provided in the book.
  • Compare the book's explanations with the course materials.
Implement Filters from Scratch
Solidify your understanding of filtering by implementing common filters (e.g., moving average, Gaussian) in MATLAB or Python without using built-in functions.
Show steps
  • Choose a filter type (e.g., moving average).
  • Write code to implement the filter algorithm.
  • Test the filter on sample signals.
  • Compare your implementation with built-in functions.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'Digital Signal Processing: Principles, Algorithms, and Applications' by John G. Proakis and Dimitris G. Manolakis
Expand your knowledge with a comprehensive textbook on digital signal processing.
Show steps
  • Focus on chapters related to course topics.
  • Work through the mathematical derivations.
  • Use the book as a reference for specific algorithms.
Create a Signal Processing Blog Post
Reinforce your learning by explaining a signal processing concept (e.g., convolution, filtering) in a blog post format, targeting an audience with some technical background.
Show steps
  • Choose a signal processing topic from the course.
  • Research the topic and gather relevant information.
  • Write a clear and concise blog post explaining the concept.
  • Include examples and visualizations to illustrate the concept.
  • Publish the blog post on a platform like Medium or a personal website.
Denoise Audio Recordings
Apply the denoising techniques learned in the course to real-world audio recordings (e.g., speech, music) and evaluate the effectiveness of different methods.
Show steps
  • Find noisy audio recordings online or record your own.
  • Implement different denoising algorithms from the course.
  • Evaluate the performance of each algorithm using metrics like SNR.
  • Document your findings and compare the results.
Develop a Real-Time Signal Processing Demo
Challenge yourself by creating a real-time signal processing application (e.g., audio effects, noise cancellation) using MATLAB or Python and a suitable hardware interface (e.g., microphone, sound card).
Show steps
  • Choose a real-time signal processing application.
  • Design the system architecture and algorithm.
  • Implement the application in MATLAB or Python.
  • Test and debug the application in real-time.
  • Create a presentation or demo showcasing your work.

Career center

Learners who complete Signal processing problems, solved in MATLAB and in Python will develop knowledge and skills that may be useful to these careers:
Audio Engineer
Audio engineers work with the recording, mixing, and mastering of audio. Signal processing is at the heart of audio engineering, as it allows audio engineers to manipulate and enhance audio signals. An audio engineer needs to be skilled in filtering, equalization, and compression. This course provides a good set of tools in these areas. The course's focus on practical implementation in MATLAB and Python allows an audio engineer to apply these techniques to real-world audio projects. In particular, the sections on filtering, spectral analysis, and time-frequency analysis are useful, as they enable audio engineers to shape the sound of audio recordings.
Acoustic Engineer
Acoustic engineers deal with sound and vibration. This field relies heavily on signal processing techniques for analyzing and manipulating audio signals. Acoustic engineers use tools like the Fourier transform, filtering, and spectral analysis. This course helps build a strong foundation in these areas. The course's emphasis on practical implementation in MATLAB and Python allows acoustic engineers to apply these techniques to real-world problems, such as noise reduction, audio enhancement, and sound localization. The filtering and spectral analysis sections of the course are particularly relevant, because they enable acoustic engineers to analyze and modify audio signals effectively. If you become an acoustic engineer, you will learn to work with sound in new ways.
Biomedical Engineer
Biomedical engineers apply engineering principles to solve medical and healthcare-related problems. Signal processing plays a vital role in analyzing physiological signals, such as EEG, ECG, and EMG data. A biomedical engineer needs to be able to filter, denoise, and extract relevant features from these signals. This course directly addresses these needs with its focus on denoising techniques, spectral analysis, and feature detection. The course's implementation of signal processing techniques in MATLAB and Python provides practical skills that can be immediately applied to biomedical data analysis. In particular, the sections on artifact removal and time-frequency analysis are highly relevant for this role, as they enable biomedical engineers to gain deeper insights from complex biomedical signals.
Seismologist
Seismologists study earthquakes and seismic waves to understand the Earth's structure and dynamics. Signal processing techniques are essential for analyzing seismic data, which is often noisy and complex. A seismologist will need to filter, denoise, and extract relevant features from seismic signals. This course directly addresses these needs with its focus on denoising techniques, spectral analysis, and feature detection. The course’s treatment of MATLAB and Python gives practical skills that can be immediately applied to seismic data analysis. In particular, the sections on artifact removal and time-frequency analysis are of immense importance, as they enable seismologists to gain deeper insight from complex seismic signals.
Wireless Communications Engineer
Wireless communications engineers design and develop wireless communication systems. Signal processing is at the core of wireless communications, as it enables the efficient transmission and reception of signals over the air. A wireless communications engineer needs expertise in modulation, coding, and equalization. This course provides a foundation in the signal processing techniques used in wireless communications. The course's implementation of these techniques in MATLAB and Python provides practical skills that can be immediately applied to wireless communication projects. In particular, the sections on filtering, convolution, and spectral analysis are useful, as they enable wireless communications engineers to design more robust wireless systems.
Radar Systems Engineer
Radar systems engineers design, develop, and maintain radar systems for various applications, including air traffic control, weather forecasting, and defense. Radar systems rely heavily on signal processing techniques to extract information from reflected signals. A radar systems engineer needs expertise in filtering, pulse compression, and Doppler processing. This course helps build a foundation in these areas, with its focus on filtering, convolution, and spectral analysis. The course’s implementation of these techniques in MATLAB and Python provides practical skills that can be applied to radar signal processing. Specifically, the sections on filtering and convolution are highly relevant, as they enable to enhance signal quality by removing noise and interference.
Control Systems Engineer
Control systems engineers design and implement systems that control the behavior of other systems. Signal processing is used to analyze and filter sensor data, design controllers, and identify system dynamics. A control systems engineer needs to understand filtering techniques, system identification, and time-frequency analysis. This course provides strong techniques in these areas. The course's practical focus, with its MATLAB and Python examples should be helpful for control systems engineers seeking to improve their skills in system analysis and controller design. In particular, the sections on filtering and convolution are directly applicable. The course's emphasis on real-world implementation can enable a control systems engineer to design more robust and effective control systems.
Geophysicist
Geophysicists study the physical properties and processes of the Earth. Signal processing is a key tool for analyzing geophysical data, such as seismic data, electromagnetic data, and well logs. A geophysicist relies on filtering, deconvolution, and spectral analysis to extract information about subsurface structures and resources. This course provides a strong base in these areas. The course's emphasis on practical application, with its MATLAB and Python examples, allows to apply these techniques to real-world geophysical problems. The sections on filtering, spectral analysis, and deconvolution are highly relevant, as they enable to enhance signal quality and to extract meaningful information from noisy geophysical data.
Robotics Engineer
Robotics engineers design, build, and program robots. Signal processing is used to process sensor data, such as data from cameras, lidar, and accelerometers. A robotics engineer needs to understand filtering, feature extraction, and sensor fusion. This course provides a good foundation in these areas. The course's practical approach, with its MATLAB and Python examples allows robotics engineers to apply these techniques to real-world robotic systems. In particular, the sections on filtering, feature detection, and outlier detection are helpful, as they enable robots to perceive and interact with their environment more effectively.
Data Scientist
A data scientist extracts knowledge and insights from data. This often involves working with time series data and requires skills in signal processing to denoise and analyze complex datasets. This course helps build a foundation in digital signal processing techniques, which are essential for data scientists working with time series data. The extensive MATLAB and Python code provided in the course allows data scientists to implement these techniques in their own projects, and the sections on filtering and wavelet analysis are particularly relevant for this role, as these are powerful tools for extracting meaningful information from noisy data. This course may be useful, as it offers hands-on experience, which enables data scientists to tackle real-world challenges.
Machine Learning Engineer
Machine learning engineers develop and implement machine learning algorithms. Signal processing is often a crucial step in preparing data for machine learning models. This course helps build core signal processing techniques, such as denoising, feature extraction, and time-frequency analysis, all of which enable machine learning engineers to preprocess data effectively. The hands-on approach of the course, with its extensive code examples in MATLAB and Python, allows machine learning engineers to adapt these techniques to their specific needs. The sections on feature detection and working with noisy signals are particularly valuable. This course may be useful, as its practical focus allows machine learning engineers to improve the performance of their models by ensuring high-quality input data.
Image Processing Engineer
Image processing engineers develop algorithms to process, analyze, and manipulate digital images. Signal processing techniques are fundamental to image processing, as images can be viewed as two-dimensional signals. An image processing engineer uses techniques for filtering, noise reduction, and feature extraction. This course helps build a solid foundation in these areas. While the course focuses on one-dimensional signals, the underlying principles and techniques are transferable to image processing. The sections can be applied to image denoising, enhancement, and feature detection. The MATLAB and Python implementations provide practical tools for image processing applications. This course may be useful, as it offers a way to enhance images.
Econometrician
Econometricians use statistical methods to analyze economic data and test economic theories. Signal processing techniques can be valuable for analyzing time series data, such as GDP, inflation, and unemployment rates. This course may be useful, as it introduces a number of signal processing techniques, including spectral analysis and filtering. It can help econometricians identify patterns and cycles in economic data. The MATLAB and Python code provided in the course allows econometricians to implement these techniques and test their effectiveness. The sections on detrending and resampling are helpful, as they help to prepare economic data for analysis and to address issues with data frequency.
Network Engineer
A network engineer designs, implements, and manages computer networks. Signal processing can be useful for analyzing network traffic, detecting anomalies, and optimizing network performance. This course introduces a number of signal processing techniques, including filtering and spectral analysis. This course may be useful, as it helps a network engineer identify patterns and anomalies in network data. The MATLAB and Python code provided in the course can be used to implement these techniques and test their effectiveness. The sections on time series denoising and outlier detection are particularly relevant, as they help to remove noise and identify unusual activity in network traffic.
Financial Analyst
A financial analyst analyzes financial data to provide insights and recommendations. Signal processing techniques can be useful for analyzing time series data, such as stock prices and economic indicators. This course introduces a range of signal processing techniques, including denoising, spectral analysis, and filtering. This course may be useful, as it can help a financial analyst identify trends, patterns, and anomalies in financial data. The MATLAB and Python code provided in the course allows financial analysts to implement these techniques and test their effectiveness. The detrending and outlier detection sections are especially relevant, as they help to remove noise and identify unusual activity in financial time series.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Signal processing problems, solved in MATLAB and in Python.
Provides a comprehensive overview of digital signal processing concepts and techniques. It valuable resource for understanding the theoretical foundations behind the MATLAB and Python implementations used in the course. The book is particularly helpful for students who want to delve deeper into the mathematical aspects of signal processing. It is commonly used as a textbook in DSP courses.
Classic textbook in the field of digital signal processing. It provides a rigorous and in-depth treatment of the subject, covering a wide range of topics from basic principles to advanced algorithms. While it may be more theoretical than the course, it can serve as a valuable reference for students who want a deeper understanding of the mathematical foundations of DSP. It is commonly used as a textbook at academic institutions.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser