Matlab利用系统辨识工具箱辨识自带数据集的控制系统参数(传递函数篇)
系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。在很多控制系统中,难以确定明确的数学物理关系,也就难以确定控制系统中极为重要的传递函数。但Matlab中的的系统辨识工具箱,能够根据输入输出数据计算得到系统的传递函数,或是状态空间模型,极大的方便了对系统的建模。
一、打开系统辨识工具箱
命令行打开:在命令行窗口输入:systemIdentification。
图标打开:在APP中,单击选择SystemIdentification。
二、导入自带数据集
数据我们利用Matlab自带的数据集,导入时选择Examaple。这是一个加热器的数据集,共计1000条数据。输入为加热电功率,输出为温度。
再选了[Example]之后,数据集就被加载到工作区了。其中u2为输入,即加热功率。在这我们可以看到,其实u2只有3.41,6.41两个值,可能对应加热器的两个挡位。
根据这两组数据,生成一个局部曲线。在427的位置,加热挡位变大,温度开始上升,在441的时候,尝试降低挡位,温度开始慢慢降低。由此可以理解这二维数据的关系。
三、数据处理
导入数据之后,需要对数据划分为工作集与验证集,选择范围。
前500个作为工作集,改为500,点击insert。同样改验证集。
数据集截取
验证集截取
在主界面就可以看到工作集与验证集了,并将他们拖入相应的位置。
点击time plot,可实现对数据的预览。其中,蓝色(前500个)为工作集,橙色(后500个)为验证集。
四、开始辨识
可用来辨识的模型很多,此处只选择传递函数,开始辨识。
设置传递函数的极点数与零点数,意义已经忘记了,然后开始辨识。
辨识结果如下图所示。从图形可以看出是用来训练的前500个数据,灰色为实际值,蓝色为模型值,模型辨识精度为83.94%,最终预测误差为0.0185。
五、模型验证
这时候在右上角的tf1就是我们辨识出来的传递函数,双击可查看实际的参数值。
选中模型tf1(可选择多个模型),点击model output,即可查看验证集在多个模型上的表现。可以看出tf1模型对验证集的拟合率为81.32%。
六、获得结果
至此,我们就可以获得该加热系统的传递函数了。有了传递函数,然后可以进行进一步的操作了。