新的数据dryde;将数据dryde拖入工具箱界面(图9.4)中间的“Working data”(工作数据)中,可以对其进行参数估计与分析。
⑤ 在工具箱界面(图9.4)窗口“Estimate”下拉列表中选择“Correlation model…”估计模型的暂态响应,在弹出的对话框中可以设置时间范围等参数,默认系统设置不变则点击“Estimate”按钮,则在模型视图中生成一个模型图标lmp,点击“Transient resp”复选框,可以得到其暂态曲线,如图9.9所示;在“Estimate”下拉列表中选择“Spectral model…”估计模型的频率响应,默认弹出对话框中的参数设置进行估计,可以在模型视图中生成一个模型spd,点击“Frequency resp”复选框,可以得到其频率响应曲线,如图9.10所示。
⑥ 接下来进行参数估计,在工具箱界面(图9.4)窗口“Estimate”下拉列表中选择
图9.10 模型频率响应曲线
图9.11 生成新参数模型的窗口Parametric models
图9.12 不同模型仿真输出与实际输出的比较曲线图
图9.13 ARX模型结构阶次选择
13
“Parametric models…”,弹出对话框如图9.11,输入模型结构信息可以生成新的模型。系统默认的选择为4阶差分方程模型,用此模型估计点击“Estimate”按钮生成新的模型arx441,并将曲线自动添加到各视图中。
⑦ 在图9.11所示对话框中,可以进入“Order editor…”改变模型的阶次,选择na=2,nb=2,nk=3即为具有0.24s(3个采样周期)延时的二阶模型,点击“Estimate”生成模型arx223;此时频率响应曲线窗口和暂态响应曲线窗口都有三条曲线分别对应于前面的三个模型,在主窗口点击某一模型图标可以添加或去除在已打开视图中对应的曲线;在工具箱界面(图9.4)窗口选择“Model output”复选框,可以查看模型仿真输出与实际输出之间的比较结果,如图9.12所示,右侧给出了对应不同颜色表示的模型仿真输出与实际输出的相似度。
⑧ 在进行参数估计时,还可以选择其它模型,如状态空间模型(ss、BJ、ARMAX、oe等),阶次同样可选,操作同ARX模型的做法;如果不清楚选择阶次为多少比较合适,可以在图9.11对话框中选择“Order selection”并输入阶次的范围,系统默认为1:10,然后点击“Estimate”按钮后弹出如图9.13的对话框,根据图中提示选择合适的模型并按“Insert”插入所选模型。
9.2.3 系统辨识工具箱命令
由于系统辨识工具箱可以处理许多不同种类的模型结构,因此这些模型结构可以灵活定义。要创建一个模型进行仿真时,有必要定义模型结构不是黑箱类型而是具有更多细节能反映系统工作原理的内部结构。在系统辨识工具箱中是通过各种类型的模型对象来实现的。此模型对象包含许多特征,对任意模型使用命令get(m)可以得到模型的特征列表;使用set(m) 可以看到各特征所分配的值。而且,可以通过类似m.A这样的命令很容易地得到或者赋予某一特征值。
(1) 多项式黑箱模型:idpoly模型
通用的输入输出形式(如式(9.11))是由五个多项式定义的。这些都可表示为标准的MATLAB多项式格式。多项式的系数按降幂排列储存在一个行向量中。
例如,A(q)?1?a1q?1?a2q?2?L?anq?n可表示为:A = [1 a1 a2 ... an] 系统中的延时可在多项式B(q)前加零,例如对于如下的ARX模型:
y(t)?1.5y(t?1)?0.7y(t?2)?2.5u(t?2)?0.9u(t?3) (9.15)
可以用多项式表示为:
A = [1 -1.5 0.7] B = [0 0 2.5 0.9]
式(9.11)的多项式模型可由如下命令生成:
m = idpoly(A,B,C,D,F,lam,T)
14
lam是白噪声序列的方差,T为采样周期。后面的参数变量可以缺省为默认值。例如式(9.15)可以表示为:m = idpoly([1 -1.5 0.7],[0 0 2.5 0.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,…'PropertyN',ValueN) 变量Data是包括输入输出序列的iddata对象,而modstruc说明了被估计模型的特定结构。模型估计的结果返回到变量m中,它是存放了多种信息的模型对象。在大多数情况使用时可以不必考虑对象的细节重要输入模型名称m就可以了。若查看m的简要信息输入present(m),通过get(m)则可以得到更为详细的参数信息,参数值仍然可以采用圆点引用的形式得到,例如m.par返回的就是估计参数。
函数调用(...,'Property1', Value1,...,'PropertyN',ValueN)的参数影响着模型结构及估计算法。 (4) ARX模型
从ARX多项式建立ARX模型可以使用函数idarx,格式如下: m = idarx(A,B,Ts)
m = idarx(A,B,Ts, 'Property1', Value1,...,'PropertyN',ValueN) 对于多输入输出的ARX模型有如下形式:
15
y(t)?A1y(t?1)?A2y(t?2)?L?Anay(t?na)?B0u(t)?B1u(t?1)?LBnbu(t?nb)?e(t) (9.16)
其中系数Ak为ny*ny维矩阵,Bk为ny*nu维矩阵(ny为输出参数个数,nu为输入参数个数);
输入参数A为ny*ny*(1+na) 的3维矩阵并使得: A(:,:,k+1)=Ak A(:,:,1)=eye(ny)
输出参数B为ny*nu*(1+nb) 的3维矩阵并使得: B(:,:,k+1)=Bk Ts为采样周期。
对式(9.8)的ARX模型参数ai和bi进行估计可使用函数arx,格式如下: m = arx(Data,[na nb nk])
arx函数是基于最小二乘法的模型辨识,使用因式分解求解超定线性方程。其中Data是包含输入输出数据的基础iddata对象;na、nb和nk分别对应准确定义ARX模型的阶次和纯时延大小,如果有ny个输出和nu个输入,阶次依次定义为:na是一个ny*ny的矩阵,nb和nk为ny*nu维的矩阵。
例9.9 模拟一个具有1输入2输出的二阶ARX模型并使用模拟数据估计该对象。 A=zeros(2,2,3);
B=zeros(2,1,3); %生成符合输入输出维数的3维空矩阵 A(:,:,1)=eye(2);
A(:,:,2)=[1.5 0.1;-0.2 1.5]; A(:,:,3)=[0.7 -0.3;0.1 0.7]; B(:,:,2)=[ 1;-1];
B(:,:,3)=[ 0.5;1.2]; %为输入输出数据矩阵赋值 m0=idarx(A,B,1);
u=iddata([],idinput(300)); e=iddata([],randn (300,2)); y=sim(m0,[u,e]);
m=arx( [y,u], [ [2 2;2 2],[2;2],[1;1]]); (5) AR 模型
对于单个输出信号,ARX模型的特例就是AR模型
A(q)y(t)?e(t)
16
arx命令同样可以应用在此特例上:m = arx(y,na),但是对于标量信号,可以通过如下命令可以有更多的选择:m = ar(y,na)
通过对参数的设置可以选择参数估计的最小二乘类方法,包括Burg机遇网格的方法、几何网格的方法、Yule-Walker方法以及修正的协方差法。相关格式内容可通过“help ar”命令得到。
(6) 通用多项式黑箱模型
基于预测误差方法可以建立任意结构的基本模型,对于式(9.11)的模型,可以使用函数:m = pem(Data,nn)
nn给出所有的阶次和延时:nn = [na nb nc nd nf nk] 对于模型的非零阶次也可写为“特征名/特征值”的格式: m = pem(Data,'na',na,'nb',nb,'nc',nc,'nk',nk)
输入参数由传递函数的多项式表达式定义,命令pem涵盖了所有黑箱线性系统的模型,对于常见的几种都可以使用,例如:
m = armax(Data,[na nb nc nk]) m = oe(Data,[nb nf nk]) m = bj(Data,[nb nc nd nf nk])
它们处理的对应模型结构分别为见式(9.8)(9.9)(9.10)。 函数pem可以处理一般的多输入,单输出系统模型:
A(q)y(t)?B(q)B1(q)C(q)u1(t?nk1)?L?nuunu(t?nknu)?e(t) (9.17) F1(q)Fnu(q)D(q)这里的nb、nf和nk都是行向量,长度与包含了所有阶次和延时的输入通道的数目相同: nb = [nb1 ... nbnu]; nf = [nf1 ... nfnu]; nk = [nk1 ... nknu];
对于具有初始化条件的模型,可以用idmodel对象mi代替nn参数: m = pem(Data,mi) (7) 过程模型
对于过程控制实例,通常采用连续时间采样模型,由静态增益、时间常数和可能存在的停滞时间(时延)。这种模型可以由下列命令进行估计:
m = pem(Data,'P1D')
其中P1D表示一个极点(时间常数)和时延。 (8) 状态空间模型
17
系统识别 matlab第6章 控制工程类工具箱介绍
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)