SIMIO: Matlab package for system identification with missing inputs and outputs

Zhang Liu, Anders Hansson, and Lieven Vandenberghe


SIMIO is a Matlab package for solving system identification problems with missing inputs and outputs. The approach of recovering the missing inputs and outputs is based on the nuclear norm optimization of a subspace system identification formulation. The optimization is solved using the alternating direction method of multipliers (ADMM). Details of the algorithm are described in the paper Nuclear norm system identification with missing inputs and outputs by Z. Liu, A. Hansson, and L. Vandenberghe.


  • Files: contains the system identification routines and example files.

The examples in the SIMIO package require MATLAB’s System Identification Toolbox.

User Guide

SIMIO contains two main system identification functions.


This function computes a sequence of optimized inputs and outputs from the regularized nuclear norm optimization
 begin{array}{ll} mbox{minimize} & | , [, U ,;, Y, ] , |_* +  frac{lambda}{2} |y - y_mathrm{meas}|_F^2 , , end{array}
where U and Y are block Hankel matrices constructed from the inputs and outputs. The inputs and outputs can be partially missing.

An example is provided in the file optimize_missing_yu_example.m. The figures below illustrate the results for the compact disc arm data of the DaISy collection. The system has two inputs and two outputs. The circles in the figures indicate the available data points for system identification. The red lines in the figures show the optimized inputs and outputs returned by the optimize_missing_yu function, which can be used by a standard system identification routine, e.g., Matlab’s n4sid.

CD_Player_Arm_u1.png CD_Player_Arm_u2.png
CD_Player_Arm_y1.png CD_Player_Arm_y2.png


This function computes a sequence of optimized outputs from the regularized, weighted nuclear norm optimization
 begin{array}{ll} mbox{minimize} & | W_1 Y U^perp Phi^T W_2|_* +  frac{lambda}{2} |y - y_mathrm{meas}|_F^2 , , end{array}
where the weighting matrices W_1 and W_2 are based on variants of the standard subspace formulation (MOESP, N4SID, IVM, and CVA). The weighting matrices make solving the optimization particular slow, so the FFT technique is used to speed up the computation. The inputs and outputs in this case need to be complete. An example is provided in the file optimize_y_example.m.


We welcome and appreciate any comments, suggestions, and reports of applications of SIMIO. Please send feedback to Zhang Liu (, Anders Hansson ( or Lieven Vandenberghe (

Copyright Information

SIMIO is free and distributed under the terms and conditions of the GNU General Public License.