MATLAB模型自动辨识

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

下面我来介绍关于系统如何构建。对于一般的Simulink建模方法可以分为两类。第一类是首要原则法,就是根据系统的物理意义构造微分方程,得到状态方程后,利用Simulink里自带的乘法和加法器进行模块构建,或者直接用状态方程模块分别写入A,B,C,D四个矩阵得到系统。还有一种方法是利用Simulink里面自带的Simscape物理建模平台,里面有基本的建立机械系统,动力传动系统和机械和电子系统的模块搭建系统。最后一种就是搭建CAD模型,利用SimMechanics把CAD模型转换成MATLAB模块进行系统的搭建。所以这种方法需要玩家的数学功底比较强,知识面广阔。第二类是数据驱动法,利用MAtLAB系统辨识工具箱,根据实测数据反推系统的方程,从而达到建模目的。这种方法的首要前提是要有搭建好的物理模型进行测试。还有一个工具叫SimulinkDesignOptimization,根据实测数据调节首要原则法建立的模型中不准确的参数。从这里我们很快就能发现LEGO最大的优点就是很快的建立好物理模型,利用蓝牙传送被测的物理量。所以利用系统辨识工具箱可以很快建立出模型。下面我对系统辨识工具箱的应用进行讲解。在讲解之前,首先我们对这次建模利用的Simulink模块进行介绍。首先是SignalBuilder模块,如图1所示。打开模块的设置界面,可以方便地通过GUI(用户交互式)界面画出任意需要的波形,如图2所示。波形的输入可以通过手动的修改波形,也可以通过Excel导入的形式输入到模块内。这个模块的意义就是写入测试数据,这个就是数据驱动法的首要条件。当然在以后的设计中,当我们得到了系统,建立模型进行测试的时候不是通过上NXT进行测试,而是经过Simulink仿真,所以我们经常要写一些测试数据,所以这个模块的意义也变得十分重要。在MATLAB帮助文件里面也经常会看见这个模块的出现。然后是LEGOMINDSTORMSNXT模块,如图3所示。中两个指轮状的就是电机模型,一个是角度传感器,返回的是电机转动的角度,一个是电机模块,输入是电机的速度[-100,100]之间。接着是差分模块,如图4所示。顾名思义通过模块得到上一次的值与这一次值的差值,例如角度传感器输入进去后,输出的就是角速度。最后是输出模块,如图5所示。这个模块可以把输出结果,放入MATLAB的工作空间中,以便进行数据处理。举个例子说明工作空间的意思,你在写C语言的时候如果想看某些变量数值的时候是比较麻烦的,但是在MATLAB把变量的数值放在工作空间中,能像Excel一样的观看数值,而且可以画出图像等等,十分方便。下面开始建立Simulink模型如图6所示。输入是角速度,输出是反馈回来的角速度,也可以反馈是角度值。其中SignalBuilder如图7所示。我是利用Excel导入进SignalBuilder中的,如图8所示。这样我们就可以点Tool-RunonTargetHardWare-Run就可以编译下载到NXT中了最后得到一个结构体,数据经过提取Time和得到的角速度建立矩阵out,再把输入值建立矩阵in,格式是第一列是时间,第二列是角速度。在MATLAB中输入Ident打开系统辨识工具箱。点Importdata,如图9所示,选择Time-DomainSignals时域信号,并填入图10所示的参数。点击Estimate选择QuickStart。如图11所示。我们发现arxqs拟合度为91.82比较好。吧arxqs拖动到ToWorkspace中,这样我们的系统就建立完毕了。下面开始讲如何应用系统,建立如图12所示的模型。其中LTISystem模块参数修改为arxqs,就可以把模型输入到系统中了。

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功