利用matlab工具箱进行状态空间辨识

利用matlab工具箱进行状态空间辨识

本帖仅针对SISO系统,基于系统输入输出数据,利用matlab系统辨识工具箱,对未知系统进行状态空间模型辨识。

步骤1:打开 matlab工具箱

利用matlab工具箱进行状态空间辨识

步骤2:进入系统辨识工具箱界面

利用matlab工具箱进行状态空间辨识
步骤3:导入系统输入输出数据,下拉import data按钮,选择time domain

利用matlab工具箱进行状态空间辨识
利用matlab工具箱进行状态空间辨识

步骤4:在input和output中分别输入系统输入和输出数据,在starting time 中输入开始时间,Sample time 中输入采样间隔,确认后点击import

利用matlab工具箱进行状态空间辨识
步骤5:导入后如图所示,Data View栏中的mydata(蓝色加粗曲线,选中为加粗,否则为细线)是导入的模型,点击Data Views 下的time plot可以看到输入和输出数据,如下图所示,u1为输入,y1为输出
利用matlab工具箱进行状态空间辨识
步骤6:开始辨识过程,将working data中的曲线选为mydata中待辨识的数据(对应时两者颜色一致),下拉estimate列表,选中state space models
利用matlab工具箱进行状态空间辨识
利用matlab工具箱进行状态空间辨识

步骤7:可以指定状态空间模型的阶数,也可以选择pick best value in the range(需输入具体的阶数范围),由系统给出最优阶数,根据数据类型选择continuous-time或者discrete-time,两者最终辨识结果不同。最后点击estimate,等待辨识结果。

利用matlab工具箱进行状态空间辨识
步骤8:辨识完成后model view中会出现相应的辨识结果。右键可以看到具体的辨识结果,状态空间模型的A、B、C、D矩阵都可以查到,上述所有的操作对应的就是下面的一行代码,可通过构造mydata,再用代码形式进行计算,mydata的构造方式为:mydata=[output,input];

利用matlab工具箱进行状态空间辨识

步骤9:勾选model output可以将辨识结果和实际相应进行一个比较,一般需要进行k步预测,可在option中进行设置

利用matlab工具箱进行状态空间辨识
步骤10:最终将ss1辨识结果拖至to workspace,则workspace中就会出现一个结构体ss1,包含辨识所有辨识结果利用matlab工具箱进行状态空间辨识
本文为处女作,仅供科研小白参考,还望大家多多支持!