做控制的时候有一个对象的数学模型非常重要,有时候对机理搞不太清楚或者很难得建立一个模型的时候可以借助实验数据直接做黑箱建模。MATLAB中提供了System identification工具可以很方便地做模型辨识,下面具体讲一下怎么操作的。
数据导入
打开matlab->App中的System identifacation:
导入的数据可以包括时域的,也可以包括频域的。填入相应的输入变量名,输出变量名,采样时间。import导入后在主界面的data views中会生成对应的图形。
按下主界面中的time plot可以显示数据,检查数据是否正确很方便。
有时候可能需要把数据拉到零附近,preprocess中提供了remove means。
要对数据进行操作时,都要把数据拖到working data中才能生效
preprocess中提供了select range可以把数据分成两个部分,一个用来辨识模型,一个用来验证模型。
我的数据一共有1000个采样点,分成两个部分,选择第一个用来辨识的数据为1-500,第二个用来验证的部分为501-1000,修改名字后insert。
重新调整一下组件:
数据建模
1、使用Quick start估算线性模型
它将自动生成包括imp的阶跃响应、spad的频率响应、以及arxqs的四阶ARX模型。mathworks的官方解释如下:
imp — Step response over a period of time using the impulseest algorithm.
spad — Frequency response over a range of frequencies using the spa algorithm. The frequency response is the Fourier transform of the impulse response of a linear system.By default, the model is evaluated at 128 frequency values, ranging from 0 to the Nyquist frequency.
arxqs — Fourth-order autoregressive (ARX) model using the
arx algorithm.
Model output窗口会产生一个拟合效果的列表,89.44代表辨识的模型和数据之间的拟合程度是89.44%。 Quick start的主要目的是通过观察step输出,频率响应是否具有线性特性,以便决定是否可以用线性模型来对数据建模。
2、利用ARX确定模型的阶次
选择Estimate中的Polynomial models,orders中的阶次na nb nk分别代表系统的极点、零点以及时延。这里选取一个范围1:10用来找到一个比较好的阶次。
点击Estimate后将弹出下面的窗口,纵轴是Unexplained output variance,值越低表示当前阶次配比能更好地拟合模型。红色、绿色、蓝色分别代表三种不同评价指标下最好的阶次选择。 在控制理论中倾向于选择低阶的模型,第三个条形图的效果和绿色条形图的效果差不多,阶次比较合理,na =2,nb=2,bk=3。
3、辨识传递函数模型
有了模型阶次的大概范围之后,可以选择传递函数模型进行辨识。
延时时间等于(nk−1)∗Ts=(3−1)∗0.08=0.16,Ts是数据的采样时间
4、用状态空间对模型进行辨识
选择模型的阶次,修改Estimation options->focus为用以优化输出仿真的模型
5、根据模型辨识的效果选择一个模型
双击对应的图表就可以看到对应模型的参数。
有了模型之后设计控制器或者用来分析对象的动态特性就非常方便了!
|
请发表评论