L09: System Identification¶
Prerequisites: L00-L08 | Effort: 90 min | Seborg: Chapter 7
Learning Objectives¶
- ✅ Generate PRBS (Pseudo-Random Binary Sequence) excitation signals
- ✅ Collect input-output data for system identification
- ✅ Understand train/test data splits for model validation
- ✅ Export data for ARX/FOPTD model fitting in Python
- ✅ Validate identified models against test data
Theory Recap: System Identification (Seborg Ch. 7)¶
Goal: Determine process model (K, τ, θ) from input-output data
Steps: 1. Design experiment: Choose excitation signal (PRBS, steps, ramps) 2. Collect data: Run test, record input (u) and output (y) 3. Fit model: Estimate parameters using least squares, ARX, etc. 4. Validate: Test model on independent data set
PRBS (Pseudo-Random Binary Sequence): - Binary signal that switches between two levels - "Pseudo-random" pattern excites all frequencies - Better than single step (more information content) - Switchtime ≈ 0.5τ to 2τ (need rough τ estimate)
Odibi Hands-On¶
Example 1: Generate PRBS Input Data¶
Working example: /examples/cheme_course/L09_system_id/prbs_excitation.yaml
Example 2: Train/Test Split¶
Split data 70/30 for model fitting and validation.
Working example: /examples/cheme_course/L09_system_id/train_test_split.yaml
Example 3: Python Analysis Script¶
# fit_arx_model.py
# Loads Odibi-generated PRBS data
# Fits ARX model using scipy or control library
# Validates on test set
Working example: /examples/cheme_course/L09_system_id/fit_arx_model.py
Summary¶
- ✅ PRBS excites process better than single step
- ✅ Odibi generates identification data
- ✅ Python fits models (ARX, FOPTD)
- ✅ Always validate on test data
Next: L10: Interacting Loops