Introductions
  • Signal processing = decision-making + tools
  • Using MATLAB in this course
  • Using Octave-online in this course
  • Using Python in this course
  • Having fun with filtered Glass dance
  • Writing code vs. using toolboxes/programs
  • Using Udemy like a pro
Time series denoising
  • MATLAB and Python code for this section
  • Mean-smooth a time series
  • Gaussian-smooth a time series
  • Gaussian-smooth a spike time series
  • Denoising EMG signals via TKEO
  • Median filter to remove spike noise
  • Remove linear trend (detrending)
  • Remove nonlinear trend with polynomials
  • Averaging multiple repetitions (time-synchronous averaging)
  • Remove artifact via least-squares template-matching
  • Code challenge: Denoise these signals!
Spectral and rhythmicity analyses
  • MATLAB and Python code for this section
  • Crash course on the Fourier transform
  • Fourier transform for spectral analyses
  • Welch's method and windowing
  • Spectrogram of birdsong
  • Code challenge: Compute a spectrogram!
Working with complex numbers
  • MATLAB and Python code for this section
  • From the number line to the complex number plane
  • Addition and subtraction with complex numbers
  • Multiplication with complex numbers
  • The complex conjugate
  • Division with complex numbers
  • Magnitude and phase of complex numbers
Filtering
  • MATLAB and Python code for this section
  • Filtering: Intuition, goals, and types
  • FIR filters with firls
  • FIR filters with fir1
  • IIR Butterworth filters
  • Causal and zero-phase-shift filters
  • Avoid edge effects with reflection
  • Data length and filter kernel length
  • Low-pass filters
  • Windowed-sinc filters
  • High-pass filters
  • Narrow-band filters
  • Two-stage wide-band filter
  • Quantifying roll-off characteristics
  • Remove electrical line noise and its harmonics
  • Use filtering to separate birds in a recording
  • Code challenge: Filter these signals!
Convolution
  • MATLAB and Python code for this section
  • Time-domain convolution
  • Convolution in MATLAB
  • Why is the kernel flipped backwards?!?!!?
  • The convolution theorem
  • Thinking about convolution as spectral multiplication
  • Convolution with time-domain Gaussian (smoothing filter)
  • Convolution with frequency-domain Gaussian (narrowband filter)
  • Convolution with frequency-domain Planck taper (bandpass filter)
  • Code challenge: Create a frequency-domain mean-smoothing filter
Wavelet analysis
  • MATLAB and Python code for this section
  • What are wavelets?
  • Convolution with wavelets
  • Scientific publication about defining Morlet wavelets
  • Wavelet convolution for narrowband filtering
  • Overview: Time-frequency analysis with complex wavelets
  • Link to youtube channel with 3 hours of relevant material
  • MATLAB: Time-frequency analysis with complex wavelets
  • Time-frequency analysis of brain signals
  • Code challenge: Compare wavelet convolution and FIR filter!
Resampling, interpolating, extrapolating
  • MATLAB and Python code for this section
  • Upsampling
  • Downsampling
  • Strategies for multirate signals
  • Interpolation
  • Resample irregularly sampled data
  • Extrapolation
  • Spectral interpolation
  • Dynamic time warping
  • Code challenge: denoise and downsample this signal!
Outlier detection
  • MATLAB and Python code for this section
  • Outliers via standard deviation threshold
  • Outliers via local threshold exceedance
  • Outlier time windows via sliding RMS
  • Code challenge
Feature detection
  • MATLAB and Python code for this section
  • Local maxima and minima
  • Recover signal from noise amplitude
  • Wavelet convolution for feature extraction
  • Area under the curve
  • Application: Detect muscle movements from EMG recordings
  • Full width at half-maximum