Skip to content

Hiroshi-Okajima/MATLAB_state_observer

Repository files navigation

MATLAB_state_observer

MATLAB codes for state observer and state estimation — from fundamental Luenberger observers to advanced multi-rate and outlier-robust methods.

This repository accompanies the comprehensive guide: State Observer and State Estimation: A Comprehensive Guide on blog.control-theory.com.

Author: Hiroshi Okajima, Associate Professor, Kumamoto University, Japan


Repository Structure

MATLAB_state_observer/
│
├── 01_luenberger_observer/          Continuous-time and discrete-time Luenberger observer
│   ├── main_continuous.m
│   ├── main_discrete.m
│   └── README.md
│
├── 02_observer_based_control/       Observer-based feedback control (separation principle)
│   ├── main_observer_feedback.m
│   └── README.md
│
├── 03_kalman_filter/                Kalman filter (standard, steady-state)
│   ├── main_kalman.m
│   └── README.md
│
├── 04_hinf_filter/                  H-infinity filter design via LMI
│   ├── main_hinf_filter.m
│   └── README.md
│
├── 05_multirate_observer/           Multi-rate state observer (IEEE Access 2023)
│   ├── main_multirate_observer.m
│   └── README.md
│
├── 06_multirate_feedback/           Observer-based feedback for multi-rate systems (IEEE Access 2023)
│   ├── main_multirate_feedback.m
│   └── README.md
│
├── 07_multirate_kalman/             Multi-rate Kalman filter via LMI (arXiv 2026)
│   ├── main_multirate_kalman.m
│   └── README.md
│
└── 08_mcv_observer/                 MCV observer: outlier-robust estimation (JCMSI 2021)
    ├── main_mcv_observer.m
    └── README.md

Folder Descriptions and Related Papers

01_luenberger_observer — Fundamental State Observer

Basic Luenberger observer implementation for both continuous-time and discrete-time LTI systems. Demonstrates observer gain design via pole placement and the convergence of estimation error.

02_observer_based_control — Separation Principle

Observer-based state feedback control. Demonstrates the separation principle: independent design of controller gain K and observer gain L.

03_kalman_filter — Optimal Stochastic Estimation

Standard discrete-time Kalman filter for systems with process noise and measurement noise. Includes steady-state Kalman filter and continuous-time Kalman-Bucy filter.

04_hinf_filter — Robust H∞ Filter via LMI

H-infinity filter design using Linear Matrix Inequalities (LMIs). Minimizes the worst-case estimation error gain without requiring statistical noise assumptions.

05_multirate_observer — Multi-Rate State Observer

Periodically time-varying state observer for systems where sensors operate at different sampling rates. Observer gains designed via LMI optimization of the l2-induced norm.

06_multirate_feedback — Observer-Based Feedback for Multi-Rate Systems

Complete observer-based feedback controller for multi-rate systems using cyclic reformulation.

07_multirate_kalman — Multi-Rate Kalman Filter via LMI

Steady-state Kalman filter design for multirate systems using LMI optimization with cyclic reformulation.

08_mcv_observer — MCV Observer (Outlier-Robust)

Median of Candidate Vectors (MCV) observer for state estimation robust to sensor outliers. Multiple estimation candidates are generated and the median operation selects one unaffected by outliers.


Requirements

  • MATLAB (R2020a or later recommended)
  • Control System Toolbox
  • Robust Control Toolbox (for LMI-based designs in 04_hinf_filter, 05_multirate_observer, 07_multirate_kalman)

How to Use

  1. Navigate to the folder of interest (e.g., cd 05_multirate_observer)
  2. Open the main_*.m file in MATLAB
  3. Run the script — each folder is self-contained
  4. See the README.md in each folder for paper references and parameter explanations

Related Resources

Blog (blog.control-theory.com)

Topic Link
Hub: State Observer and State Estimation blog.control-theory.com/entry/state-observer-estimation
State Observer: Basic Mechanism blog.control-theory.com/entry/2024/02/28/100201
State Observer for State Space Model blog.control-theory.com/entry/2024/10/01/143305
Kalman Filter blog.control-theory.com/entry/kalman-filter
H-infinity Filter blog.control-theory.com/entry/h-infinity-filter
Multi-Rate Observer blog.control-theory.com/entry/2026/03/04/081748
MCV Observer (Research) blog.control-theory.com/entry/2026/03/04/084603
MCV Observer (Overview) blog.control-theory.com/entry/2024/10/01/093531
System Identification Hub blog.control-theory.com/entry/system-identification
System Identification: Obtaining Dynamical Model blog.control-theory.com/entry/2024/10/03/151451
LMI and Controller Design blog.control-theory.com/entry/lmi-eng
Model Error Compensator (MEC) blog.control-theory.com/entry/model-error-compensator-eng
Discretization blog.control-theory.com/entry/discretization-eng

Research Pages (www.control-theory.com)

MATLAB File Exchange

Code Ocean

Other GitHub Repositories

Video


Migration Note

This repository consolidates and extends the previous repository MATLAB_state_estimation (MCV observer code). The original repository remains available but is no longer updated. New code and updates will be added here.


Citation

If you use these codes in your research, please cite the corresponding paper(s) listed in each folder's README.


Author

Hiroshi Okajima — Associate Professor, Graduate School of Science and Technology, Kumamoto University. Member of SICE, ISCIE, and IEEE.


License

MIT License