matlab进行多输入多输出系统辨识

工具: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!

  • 14
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日梦想家_胖七七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值