Main Content

Convert MIMO Matrix Data to Timetable for Continuous-Time Model Estimation

Estimate a continuous-time model function by first converting matrix data to a timetable.

Load the data, which includes input matrix usteam, output matrix ysteam, and sample time Ts.

load sdatasteam.mat usteam ysteam Ts

Combine usteam and ysteam into the single timetable ttsteam. In order to create a variable for each channel, you must specify each matrix column explicitly.

tts = timetable(usteam(:,1),usteam(:,2),ysteam(:,1),ysteam(:,2),...
    'rowtimes',seconds(Ts*(1:size(usteam,1))));
head(tts,4)
      Time       Var1       Var2        Var3        Var4   
    ________    _______    _______    ________    _________

    0.05 sec    -1.5283     2.0584     0.57733     -0.12274
    0.1 sec      1.4412     -2.005     0.75804    -0.086114
    0.15 sec     1.4314     2.0584    -0.76577     -0.19845
    0.2 sec      1.4412    -1.9806     0.47721     -0.20577

Estimate a continuous-time state-space model.

nx = 3;
sysc = ssest(tts,nx,'InputName',["Var1" "Var2"],'OutputName',["Var3" "Var4"]);

Compare the model to the data.

compare(tts,sysc)

Figure contains 2 axes objects. Axes object 1 with ylabel Var3 contains 2 objects of type line. These objects represent Validation data (Var3), sysc: 90.8%. Axes object 2 with ylabel Var4 contains 2 objects of type line. These objects represent Validation data (Var4), sysc: 62.29%.