您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > MATLAB系统辨识工具箱简介(NJUST)
1MATLAB系统辨识工具箱简介MATLAB的辨识工具箱提供了进行系统模型辨识的有力工具,其主要功能包括:(1)各种模型类的建立和转换函数(2)非参数模型的辨识(3)参数模型的辨识(4)递推参数估计(5)模型验证工具(6)集成多种功能的图形用户界面1系统辨识工具箱函数表1系统辨识工具箱函数函数名功能模型的建立函数idarx从ARX多项式建立ARX模型iddata标准包含输入输出数据的对象idgrey根据m文件定义idgrey模型idpoly构造基于输入输出模型的idpoly模型idmodel基本的模型对象,综合了许多模型的公共特点idss构造状态空间模型idfrd构造idfrd模型模型转换和模型结构函数c2d将连续时间模型转换为离散时间模型d2c将离散时间模型转换为连续时间模型tfdata将模型转换为传递函数zpkdata计算模型的零点、极点和稳定增益ssdata将模型转换为状态空间模型idmodred对模型降阶arxdata从模型中提取ARX模型参数freqresp计算模型的频率函数ss,tf,zpk,frd将系统辨识工具箱中的模型对象转换为控制系统工具箱中的LTI模型2非参数模型的辨识函数covf估计时间序列的协方差函数cra采用相关分析方法估计对象脉冲响应和方差函数etfe直接基于快速Fourier变换估计对象的频率响应spa利用频谱分析方法估计对象的频率响应和噪声频谱参数模型类的辨识函数ar时间序列的AR模型ivar基于最优辅助变量选择的AR模型辨识arx基于最小二乘法估计的ARX模型辨识iv4采用近似最优4阶段辅助变量法的ARX模型辨识ivx采用任意辅助变量的ARX模型辨识armax估计ARMAX或ARMA模型的参数oe基于预测误差法的输出误差模型辨识bj基于预测误差法的Box-Jenkins模型辨识n4sid基于子空间方法的状态空间模型辨识pem基于预测误差法的通用线性输入输出模型辨识非参数模型类的辨识函数rarx递推最小二乘法的ARX模型辨识rarmax递推最小二乘法的ARMAX模型辨识(只能用于单输入单输出系统)rbjBox-Jenkins模型的递推辨识roe输入误差模型的递推辨识rpem递推预测方法的线性输入输出模型辨识rplr伪线性回归的线性输入输出模型辨识segment基于数据分段的ARX或ARMAX模型辨识模型验证与仿真函数idinput生成信号,通常用作辨识的输入信号sim线性模型仿真predict根据历史数据预测k步后辨识模型的输出数据compare比较模型输出与实际输出pe计算模型预测误差resid计算模型预测误差并进行相关分析aic计算已辨识模型的AIC信息准则fpe计算已辨识模型的FPE准则模型结构选择的函数arxstruc计算ARX模型类的损失函数3ivstruc计算输出误差模型类的损失函数selstruc根据各种准则选择模型结构strucarxstruc和ivstruc的典型结构矩阵估计模型的不确定性的函数idsimsd仿真几种可能的模型的输出响应,以说明不确定性th2ff模型频率函数和标准偏差th2zp零点、极点、静态增益及其标准偏差arxdata含有估计参数的方差信息其他与系统辨识有关的函数plot绘制输入输出的iddata对象ffplot绘制频率响应曲线bode绘制Bode图nyquist绘制Nyquist曲线pzmap绘制零点和极点图present显示模型的信息impulse估计、计算和显示脉冲响应view绘制模型的特征dtrend消除数据中的趋势项idfilt用一般的滤波器或ButterWorth滤波器对输入输出数据进行滤波Resample对输入输出数据重新采样在具体的辨识过程中,应该如何选择辨识函数呢?每个辨识算法都对应于特定的模型类型,所以应先选定模型类,再选择辨识算法及辨识函数。系统辨识常用的几类模型如下:(1)ARX模型11()()()()()kAzykBzuknkξ−−=−+(2)ARMAX模型111()()()()()()kAzykBzuknCzkξ−−−=−+(3)Box-Jenkins模型1111()()()()()()()kBzCzykuknkFzDzξ−−−−=−+(4)通用线性模型11111()()()()()()()()kBzCzAzykuknkFzDzξ−−−−−=−+42.获取在线帮助MATLAB是一个高性能的数值计算、可视化演示和验证编程环境。提供了近20类基本命令函数,它们有一部分是MATLAB的内部命令函数,有一部分是以M文件形式出现的函数,这些M文件按类归于一子目录下。用户很容易获得在线帮助,因为每个文件中都包含了这个函数的用法指南。3.编写应用函数MATLAB包括非常丰富的工具箱,为各个领域的研究和工程应用提供了有力的工具。借助于这些工具,各个层次的研究人员可直观、方便地进行分析、计算和设计工作,从而大大地节约了时间。同时,用户也可以根据自己的需要,编写实用的函数,方便自己和他人调用这些函数。编写通用函数的工作量远大于编写专用的程序。MATLAB的通用函数一般由说明语句、注释体和函数体等部分组成。MATLAB的通用函数必须存放于和函数同名的.m后缀的文件中,才可以被其他程序所调用。如在MyFun.m文件中定义MyFun()函数如下:function[out1,…,outm]=MyFun(in1,…,inn)%说明语句%MyFun函数用于…%注释体%输入参数in1,…,inn,是…%说明函数的功能和用法%输出参数out1,…,outm是….%输入和输出参数的定义和用法out1=…%函数体︰︰Outm=…Myfun函数中,in1,…,inn为输入参数,out1,…,outm为输出参数,函数说明语句之后紧接的注释语句,则提供了该函数的帮助信息。即这些内容为输入helpMyFun命令所显示的信息。这些自编的应用函数,以M文件的形式归于一个子目录下,由SetPath命令将这个子目录置于Matlab的工作目录,之后就可以同MATLAB工具箱的任何函数一样进行使用了。54.应用举例考虑如下仿真系统()1.5(1)0.7(2)(1)0.5(2)()ykykykukukek=−−−+−+−+其中()ek为噪声项,分别取(1)2()~(0,)ekNσ;(2)()()0.5(1),()ekkkkεεε=+−为白噪声;(3)11()()10.5ekkzε−=+在这3种情况下,试采用伪随机信号作为输入,应用相关分析法辨识系统的脉冲响应函数;并辨识出系统的模型参数。实验步骤如下:首先,通过系统的模型获取仿真试验数据,然后利用相关分析法来辨识系统的脉冲响应函数,再对所获得的非参数模型进行检验,同时,分别对各种噪声模型的试验结果进行对比分析。对于参数模型的辨识,通过选取各种不同的参数模型,进行系统的结构辨识,在此基础上应用各种参数估计算法来估计模型的参数,并对所估计的模型进行检验。源程序如下:clearall;closeall;N=1000;%设置试验数据长度A=[1,-1.5,0.7];B=[0,1,0.5];C=[1,0.5];D=[1,0.5];%模型参数Model=idpoly(A,B);%理想系统模型figure(1);Step(Model,[0,100]);grid;%绘制阶跃响应曲线%产生输入输出数据Model_Wnoise=idpoly(A,B,1);%模型中加入白噪声U=iddata([],idinput(N,'prbs'));%伪随机序列E=iddata([],idinput(N,'rgs'));%白噪声序列Y=sim(Model_Wnoise,[U,E]);%产生输出数据Model_Noise1=idpoly(A,B,C);%有色噪声模型1Y1=sim(Model_Noise1,[U,E]);Model_Noise2=idpoly(A,B,1,D);%有色噪声模型2Y2=sim(Model_Noise2,[U,E]);%检验非参数模型Z=[Y,U];Z=detrend(Z);%滤波处理figure(2);[Impulse_Res,r,c1]=cra(Z,100,0,1);%相关分析法figure(3);plot(Impulse_Res(2:50));%绘制脉冲响应曲线gridon;holdon;6impulse(Model_Wnoise,'r',50);%理想的脉冲响应%阶次的估计data=iddata(Y,U);%输入输出数据组NN=struc(1:3,1:3,1:3);%阶次的选择范围Loss_Fun=arxstruc(data,data,NN);%损失函数order=selstruc(Loss_Fun,'aic');%按赤池信息准则辨识系统阶次%模型的检验Model_Para=arx(data,order);%参数估计present(Model_Para);%显示模型figure(4);compare(data,Model_Para);%预测与实际输出比较figure(5);resid(Model_Para,data);%模型预测误差[Para1,Para2]=rarx(data,order,'ff',0.98);%递推参数估计count=length(Para1);%递推次数A=[1,Para1(count,1),Para1(count,2)];%参数向量B=[0,Para1(count,3),Para1(count,4)];%参数向量Model_Para=poly2th(A,B);%建立线性模型%有色噪声模型1data=iddata(Y1,U);%输入输出数据组NN=struc(1:2,1:2,1:2);%阶次范围Loss_Fun=arxstruc(data,data,NN);%损失函数order=selstruc(Loss_Fun,'aic');%辨识系统的阶次order=[order(1),order(2),1,order(3)];%选择模型结构Model_Noise1=armax(data,order);%ARMAX模型%有色噪声模型2data=iddata(Y2,U);%输入输出数据组NN=struc(1:2,1:2,1:2);%阶次范围Loss_Fun=arxstruc(data,data,NN);%损失函数order=selstruc(Loss_Fun,'aic');%辨识系统的阶次order=[order(1),order(2),0,1,0,order(3)];%选择模型结构Model_Noise2=pem(data,order);%通用线性模型%其他模型及辨识算法NN=[2,1,2,2,1];Model_BJ=BJ(data,NN);%Box-Jenkins模型NN=[2,2,1];Model_oe=oe(data,NN);%输出误差模型NN=[2,2,1];Model_roe=roe(data,NN,'ff',0.98);%递推算法NN=[2,1,1,1,1,1];Model_pem=pem(data,NN);%通用线性模型NN=[2,1,1,1,1,1];Model_rpem=rpem(data,NN,'ff',0.98);%递推算法
本文标题:MATLAB系统辨识工具箱简介(NJUST)
链接地址:https://www.777doc.com/doc-5752234 .html