作者:天下行走
链接:https://zhuanlan.zhihu.com/p/671673739
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
假设你有一个系统,你想通过系统辨识的方式得到系统模型,系统辨识需要你的目标系统的输入和输出数据。对于控制系统,可以选择在你的建模区间内扫频,同时采集输入输出(注意要固定采样周期,也就是说代码中不要放到while循环里去采,可以通过定时器中断等),进而即可导入到MATLAB中进行系统参数辨识。数据采集非本文重点因此不做过多赘述。
- 拿出已经采集好的输入输出数据(此处我采集的输入为期望速度,输出为实际速度。
2. 将采集的数据,导入到matlab工作空间中。
3. 在matlab顶部栏,点击APP,找到并点击System Identification。进入模型辨识界面。
4. 在模型辨识界面,在Import下拉菜单中,选择时域(Time domain data)。
5. 将工作空间中的输入变量与输出变量导入进来(输入工作空间中对应的变量名即可),以及采样周期。
6. 导入数据后,选择你想用的模型形式(传函、状态空间等),这里选传递函数。
7. 选择极点个数与零点个数、连续系统或离散系统。这里选3个极点与1个零点,同时选择连续时间。选择完毕后点击Estimate。
8. 得到辨识出的系统模型,双击查看模型参数。同时也可以查看系统的阶跃响应、零极点参数、频域指标等。
9. 下滑查看数据拟合度,若拟合度过低,则拟合出的该模型的可信程度低。
总结
本文给出了MATLAB的系统辨识工具箱的基础使用方法。值得注意的是,顾名思义,工具箱仅仅只是一个工具,具体的应用场景取决于你的需求,因此对于不同的需求,使用方法和细节也不是完全一致的;同时对于不同的系统,零极点的选择也是不一致的,这取决于你的系统特性,考验的是你对系统的理解和设计方法。OK,只啰嗦这么多。