工具:matlab2021a
步骤:
1.导入数据
(1)选择菜单栏中的导入数据,选择csv格式(也可以是其他格式)的文件。
鼠标选择需要导入的数据, 也可以默认全部导入,点击菜单栏导入。
在工作区看到矩阵导入成功(共导入4个矩阵)
(2)对输入矩阵进行处理
这里w矩阵中的4列为输入,s矩阵中的4列为输出。若直接将s和w作为输入输出矩阵进行系统辨识,会报错矩阵格式不对,需要进行一个简单的转换。(猜测可能是行列向量格式不对)
w1=w.w1
w2=w.w2
w3=w.w3
w4=w.w4
s1=s.s1
s2=s.s2
s3=s.s3
s4=s.s4
w=[w1 w2 w3 w4]
s=[s1 s2 s3 s4]
2.系统识别
(1)打开系统识别工具箱
在命令行输入ident。(ident这种命令已经落后,现在使用syetemIdentification来代替)
该命令会弹出如下窗口
(2)导入时域数据
填上输入变量名称w、输出变量名称s,data name默认就行,start time是开始时间,一般为0,sample time是采样时间,按照实际采样时间填写即可(以秒为单位。)填好后点击import。
看到工具箱界面已经有了数据。
(3) 对输入数据进行预处理
选择前一半的数据进行模型辨识,后一半的数据进行数据验证。选择select range
原始数据时间跨度为0-433s,修改为0-233s进行训练,点击insert。
工具箱界面看到我们的训练集数据mydatae
将时间跨度修改为233-433,用来做验证集,点击insert。
效果如下
(4)将数据位置准备好
将mydatae拖到working data中, 将mydatav拖到validation data中。
(5)模型设置
在工具箱页面,点击estimate
a.传递函数法 transfer function models
设置模型名称、极数、零点,点击estimate。
工具箱界面显示tf1模型
双击tf1,看到每个输出的传递函数以及准确度
选中tf1,勾选model output。输出模型的效果。通过channel更换输出变量。
b.状态空间法 state space models
未知系统阶数,使用Pick best value in the range,系统在指定阶数范围内选择最优阶数。
点击estimate。工具箱页面显示结果如下:
双击ss1,看到状态方程的矩阵解,以及精度
选中两个模型,点击model output可以看出效果更好的模型是哪一个。
over!