8第9章控制工程类工具箱介绍MATLAB的工具箱为使用该软件的不同领域内的研究人员提供了捷径。迄今为止,大约有30多种工具箱面世,内容涉及自动控制、信号处理、图象处理等多种领域。这些工具箱可以用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件实时交互功能,也可以应用于多种学科、多种领域。与这些工具箱函数相关的使用格式可以通过Help命令得到,用户也可以针对具体系统设计自己的工具箱。9.2系统辨识工具箱系统辨识工具箱的主要功能包括:①参数模型辨识。主要模型有ARX、ARMAX、BJ模型,以及状态空间和输入误差等模型类的辨识。②非参数模型辨识。③模型的验证。对辨识模型的仿真,将真实输出数据与模型预测数据比较,计算相应的残差。④基于递推算法的ARX、ARMAX模型的辨识。⑤各种模型类的建立和转换函数。⑥集成多种功能的图形用户界面。该界面以图形的交互方式提供模型类的选择和建立、输入输出数据的加载和预处理,以及模型的估计等。9.2.1系统辨识原理及辨识模型简介系统辨识的主要内容包括:实验设计,模型结构辨识,模型参数辨识,模型检验。常用的模型类有:(1)参数模型类利用有限的参数来表示对象的模型,在系统辨识工具箱中的参数模型类有:ARX模型、ARMAX模型、BJ(Box-Jenkins)模型、状态空间模型和输入误差模型。通常都限定为以下特殊的情形:①ARX模型:()()()()()AqytBqutnket(9.8)②ARMAX模型:()()()()()()AqytBqutnkCqet(9.9)③BJ模型:()[()/()]()[()/()]()ytBqFqutnkCqDqet(9.10)()()[()/()]()[()/()]()AqytBqFqutnkCqDqet(9.11)④输入误差模型:()()[()/()]()()AqytBqFqutnket(9.12)9⑤状态空间模型:(1)()()()()()()xtAxtButytCxtDutvt(9.13)其中A,B,C,D为状态空间模型的系数矩阵,v(t)为外界噪声信号。(2)非参数模型类非参数模型主要包括脉冲响应模型和频域描述模型。如图9.3所示,假设待辨识的系统为线性系统,u为输入,y为输出,v为噪声,则可以得出输入输出的关系如下:()()()()ytGqutvt(9.14)其中:111()()()()()();(1)kkkGqutgkutkGqgkqqutq为时间平移算子,序列g(k)称为对象的脉冲响应模型,v(t)是不可测量的附加干扰噪声。9.2.2系统辨识工具箱图形界面在MATLAB的命令窗口中键入ident进入系统辨识工具箱的图形界面,如图9.4所示。除此之外,MATLAB还提供了以命令和函数的方法提供系统辨识工具。(1)数据视图数据视图主要完成输入输出数据的导入及绘图,位于图9.4的左边(DataViews)。选择importdata列表框中的“Timedomaindata”可以进入数据的导入界面,如图9.5所示。uvy图9.3线性对象图9.4系统辨识工具箱的图形界面图9.5导入数据的窗口10在图9.5所示的对话框中,可以指定输入输出的变量名称即可导入输入输出数据,还可指定采样周期,并为数据命名。导入数据后,可以通过图形界面对这些数据进行处理。(2)操作选择在图形界面的中间部分为数据操作(Operation)部分,包括两个下拉式列表框。图形界面的上方的是预处理(Preprocess)操作,可以对数据进行相关操作,如:消除趋势、滤波、选择输入输出通道等。图形界面的下方是进行估计(Estimate)操作,可以选择模型的类型,并通过相应的对话框输入模型阶次等信息。此外,还可以将视图区的图表拖动至两个下拉列表之间的区域,使该图表所表示的数据成为当前工作的数据,不用的数据可以拖入下方的垃圾桶“Trash”内。(3)模型视图在图9.4界面右边的区域为Modelviews区即模型视图区。在此区域可以选择和切换不同的模型,进行模型的验证和特征曲线的绘制等。模型视图的下方有许多复选框,供用户查看辨识输出曲线及其它的特征曲线,功能见表9.1。下面通过MATLAB提供的实例来说明系统辨识工具箱的功能和使用方法。例9.8以MATLAB的demo系统提供的干发器(dryer)模型为例,输入为电源电压信号,输出为气流的温度。①在MATLAB的命令窗口键入:loaddryer2系统自动将u2和y2两个变量装载到MATLAB的“workspace”中,u2为输入,y2为输出。②在图9.5所示对话框中,分别将u2、y2填入“input”、“output”旁的文本框中,如果MATLAB的“workspace”中已有待辨识模型的输入输出数据向量,也可填入此处用于辨识;在“Samplinginterval”中输入采样周期:0.08,并可在“Dataname”旁的文本框为数据命名;点击“Import”按钮后数据以图标的形式显示在视图中,如图9.6所示。点击工具箱界面(图9.4)数据视图下方的“Timeplot”复选框可以打开随时间变化的曲线,如图9.7所示。③如果要消除数据序列中的平均值(constantlevel)可返回工具箱界面(图9.4)窗口在“Preprocess”下拉列表中选择“Removemeans”,此时在数据视图区出现新的数据dyrd,同时新数据随时间变化的曲线也会自动地加入图9.7中,如图9.8所示;双击数据视图中任一图表可以查看其相应的信息。④在工具箱界面(图9.4)窗口“Preprocess”下拉列表中选择“Selectrange…”后打开一表9.1图形界面之模型视图的复选框功能一览表Modeloutput模型输出曲线Modelresids模型预测残差曲线Transientresp暂态响应曲线Frequencyresp频率响应曲线Zerosandpoles模型零极点图Noisespectrum噪声频谱11个新的图形窗口。在此新窗口中可以选择数据的一部分用于模型估计,可以用鼠标拖动选择12或者直接键入时间范围,如0-50,选好后点击“Insert”按钮返回,此时在数据视图中生成一个图9.7信号随时间的变化曲线图9.6导入数据后的图形界面图9.9进行参数估计及其暂态响应曲线图9.8消除平均值后的图形界面及相应的曲线13新的数据dryde;将数据dryde拖入工具箱界面(图9.4)中间的“Workingdata”(工作数据)中,可以对其进行参数估计与分析。⑤在工具箱界面(图9.4)窗口“Estimate”下拉列表中选择“Correlationmodel…”估计模型的暂态响应,在弹出的对话框中可以设置时间范围等参数,默认系统设置不变则点击“Estimate”按钮,则在模型视图中生成一个模型图标lmp,点击“Transientresp”复选框,可以得到其暂态曲线,如图9.9所示;在“Estimate”下拉列表中选择“Spectralmodel…”估计模型的频率响应,默认弹出对话框中的参数设置进行估计,可以在模型视图中生成一个模型spd,点击“Frequencyresp”复选框,可以得到其频率响应曲线,如图9.10所示。⑥接下来进行参数估计,在工具箱界面(图9.4)窗口“Estimate”下拉列表中选择图9.10模型频率响应曲线图9.11生成新参数模型的窗口Parametricmodels图9.12不同模型仿真输出与实际输出的比较曲线图图9.13ARX模型结构阶次选择14“Parametricmodels…”,弹出对话框如图9.11,输入模型结构信息可以生成新的模型。系统默认的选择为4阶差分方程模型,用此模型估计点击“Estimate”按钮生成新的模型arx441,并将曲线自动添加到各视图中。⑦在图9.11所示对话框中,可以进入“Ordereditor…”改变模型的阶次,选择na=2,nb=2,nk=3即为具有0.24s(3个采样周期)延时的二阶模型,点击“Estimate”生成模型arx223;此时频率响应曲线窗口和暂态响应曲线窗口都有三条曲线分别对应于前面的三个模型,在主窗口点击某一模型图标可以添加或去除在已打开视图中对应的曲线;在工具箱界面(图9.4)窗口选择“Modeloutput”复选框,可以查看模型仿真输出与实际输出之间的比较结果,如图9.12所示,右侧给出了对应不同颜色表示的模型仿真输出与实际输出的相似度。⑧在进行参数估计时,还可以选择其它模型,如状态空间模型(ss、BJ、ARMAX、oe等),阶次同样可选,操作同ARX模型的做法;如果不清楚选择阶次为多少比较合适,可以在图9.11对话框中选择“Orderselection”并输入阶次的范围,系统默认为1:10,然后点击“Estimate”按钮后弹出如图9.13的对话框,根据图中提示选择合适的模型并按“Insert”插入所选模型。9.2.3系统辨识工具箱命令由于系统辨识工具箱可以处理许多不同种类的模型结构,因此这些模型结构可以灵活定义。要创建一个模型进行仿真时,有必要定义模型结构不是黑箱类型而是具有更多细节能反映系统工作原理的内部结构。在系统辨识工具箱中是通过各种类型的模型对象来实现的。此模型对象包含许多特征,对任意模型使用命令get(m)可以得到模型的特征列表;使用set(m)可以看到各特征所分配的值。而且,可以通过类似m.A这样的命令很容易地得到或者赋予某一特征值。(1)多项式黑箱模型:idpoly模型通用的输入输出形式(如式(9.11))是由五个多项式定义的。这些都可表示为标准的MATLAB多项式格式。多项式的系数按降幂排列储存在一个行向量中。例如,1212()1nnAqaqaqaq可表示为:A=[1a1a2...an]系统中的延时可在多项式B(q)前加零,例如对于如下的ARX模型:()1.5(1)0.7(2)2.5(2)0.9(3)ytytytutut(9.15)可以用多项式表示为:A=[1-1.50.7]B=[002.50.9]式(9.11)的多项式模型可由如下命令生成:m=idpoly(A,B,C,D,F,lam,T)15lam是白噪声序列的方差,T为采样周期。后面的参数变量可以缺省为默认值。例如式(9.15)可以表示为:m=idpoly([1-1.50.7],[002.50.9])对于式(9.13)多输入的情况,B和F都为矩阵,行号k对应于第k个输入。对于时间序列,B和F都为空矩阵B=[],F=[]。(2)数据表示和非参数模型估计观测到的输入输出信号u(t)、y(t)分别用列向量u、y表示,序数k对应于采样数字k,对于多变量系统,每一个输入(输出)都可以表示为一个列向量,所以向量u就是一个N*nu的矩阵(N为采样观测的序列数,nu为输入通道数)。输入输出数据全部表示在iddata对象的格式中。这是辨识工具箱处理信号的基本对象,在很多的函数中都会使用。构造对象的使用格式:Data=iddata(y,u,Ts)其中,y是一个列向量或N*ny的矩阵,y的列对应于不同的输出通道。类似地,u也是一个列向量或N*nu的矩阵,u的列对应不同的输入通道。Ts为采样间隔。这样的构造对于大部分的应用来说已经足够。可以使用Data.OutputData或Data.y得到输出通道的信号,类似地,要得到输入信号可以使用Data.InputData或Data.u。对于时间序列(无输入信号)可以使用Data=iddata(y)或令u=[]。同样也可用于单输入系统,只需令y=[]。若需要修改采样间隔,可以令Data.Ts=0.3或使用语句:set(Data,'Ts',0.3)(3)参数模型估计在系统辨识工具箱中包括多种参数模型估计的函数,它们都具有共同的命令结构。m=function(Data,modstruc)m=...function(Data,modstruc,'Property1',Value1,…'Prop