Skip to content

bincchitherock/eec-201

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eec-201

<winter 2026> compilation of matlab projects from eec 201, graduate digital signal processing.

repository structure

.
├── CA3/
│   ├── q1_butterworth.m            # 6th-order Butterworth LPF (toolbox)
│   ├── q1_butterworth_manual.m     # 6th-order Butterworth LPF (no toolbox — manual bilinear transform)
│   ├── q2_chebyshev.m              # 6th-order Chebyshev Type I LPF
│   ├── q3_elliptic.m               # 6th-order Elliptic LPF
│   ├── q4_order_comparison.m       # Minimum order comparison: Butterworth vs Chebyshev vs Elliptic
│   ├── q5_rect_hamming.m           # 29-point FIR LPF: rectangular and Hamming windows
│   ├── q6_kaiser.m                 # 29-point FIR LPF: Kaiser window (β = 4, 6)
│   ├── q7_firpm_optimal.m          # Optimal equiripple FIR (Parks-McClellan) with alternation points
│   ├── q8_vary_passband.m          # Effect of varying passband edge on firpm ripple
│   ├── q9_vary_transition.m        # Effect of varying transition bandwidth on firpm ripple
│   ├── q10_optimal_vs_window.m     # Optimal (firpm) vs Kaiser window FIR comparison
│   ├── q11_filter_length.m         # Effect of increasing filter length (N = 29 vs 39)
│   ├── q12_fir2_comparison.m       # Frequency-sampling FIR (fir2) at N = 29 and N = 39
│   └── Report-CA3.pdf
│
├── CA4/
│   ├── q1_chirp.m                  # Linear FM chirp signal generation + spectrogram
│   ├── q3_chirp_aliased.m          # Higher chirp rate (μ = 10^10) demonstrating aliasing
│   ├── q4_narrowband.m             # Narrowband spectrograms of speech signals (pitch estimation)
│   ├── q5_wideband.m               # Wideband spectrograms of speech signals (formant estimation)
│   ├── q6_test.m                   # STFT reconstruction verification
│   ├── istft_estimate.m            # Inverse STFT via overlap-add averaging
│   ├── s1.mat                      # Speech signal 1 (8 kHz)
│   ├── s5.mat                      # Speech signal 5 (8 kHz)
│   ├── vowels.mat                  # Vowel signal for STFT reconstruction
│   └── Report-CA4.pdf
│
└── README.md

assignment summaries

ca1 — z-transforms, frequency response, and convolution

explored the relationship between z-domain representations and time/frequency-domain behavior of lti systems. key tasks:

  • derived transfer function coefficients for a damped cosine impulse response and verified via filter() and residuez()
  • investigated how pole radius r controls resonance peak height and 3 db bandwidth (Δω ∝ 1 − r)
  • demonstrated 2π-periodicity of pole angles in the z-plane
  • analyzed a 3rd-order causal iir system: pole-zero plot, roc, dc gain verification, steady-state response to composite sinusoidal input
  • compared time-domain convolution with inverse-dtft (ifft) reconstruction — agreement to ~10⁻¹⁴

ca2 — multirate sample rate conversion

implemented a three-stage rational sample rate converter to upsample audio from 11.025 khz to 24 khz using the factorization:

$$\frac{24000}{11025} = \frac{10}{7} \times \frac{8}{7} \times \frac{4}{3}$$

  • each stage: interpolation → kaiser-window fir lowpass → decimation
  • 30 db stopband attenuation; fir orders 154, 124, 62 across stages
  • duration preserved to within ~70 μs over a 154-second recording
  • bonus: built a real-time matlab gui with waveform display, short-time rms envelope (dbfs), live level meters with peak-hold, and playback scrubbing

ca3 — iir and fir filter design

systematic comparison of digital filter design methods, all targeting a lowpass response with ωc = 0.33π:

filter type design method key observation
butterworth butter + manual bilinear transform maximally flat; highest order for tight specs
chebyshev i cheby1 passband ripple trades for sharper rolloff
elliptic ellip ripple in both bands → lowest order (n = 7 vs 42 for butterworth)
fir (window) rectangular, hamming, kaiser (β = 4, 6) increasing β reduces ripple but widens transition band
fir (optimal) firpm (parks-mcclellan) equiripple; smaller δp and δs than kaiser for same n

additional investigations: effect of passband edge, transition bandwidth, and filter length on equiripple fir performance. alternation points were visually identified and counted to confirm chebyshev optimality.

extension: the butterworth filter was also designed entirely without the signal processing toolbox. i.e., the analog poles were placed manually, mapped to the z-plane via the bilinear transform, and the frequency response was evaluated directly from the transfer function definition.

ca4 — time-frequency analysis (stft and spectrograms)

  • fm chirp signals: generated a linear fm chirp (μ = 4 × 10⁹), verified that instantaneous frequency fi(t) = 2μt matches the spectrogram ridge, and demonstrated spectral aliasing when μ is increased to 10¹⁰ (ridge folds back at the nyquist frequency ~125 μs into the signal)
  • speech spectrograms: constructed narrowband (nw = 512) and wideband (nw = 64) spectrograms of two speech signals to estimate fundamental frequency trajectories and formant frequencies (f1, f2, f3) respectively
  • stft inversion: wrote istft_estimate.m to reconstruct a time-domain signal from its modified stft using overlap-add averaging with conjugate-symmetric spectrum reconstruction

requirements

  • matlab r2024a or later (earlier versions likely work but are untested)
  • signal processing toolbox required for butter, cheby1, ellip, firpm, freqz, spectrogram, kaiserord, audioplayer, etc.
  • audio toolbox optional, used only by wav_meter_gui.m for real-time playback

usage

each script is self-contained. navigate to the relevant assignment folder and j run.


etc.

  • all fir window designs use odd-length filters (type i linear phase) unless otherwise noted.
  • frequency axes are normalized to π rad/sample where applicable; matlab's convention uses the [0, 1] scale where 1 corresponds to π.
  • the istft_estimate.m function assumes a rectangular window, 1024-point fft, 256-sample window length, and 128-sample hop. modify internal parameters if using different stft settings.

About

<winter 2026> compilation of matlab projects from eec 201, graduate digital signal processing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages