系统识别 matlab第6章 控制工程类工具箱介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章控制工程类工具箱介绍
MATLAB的工具箱为使用该软件的不同领域内的研究人员提供了捷径。
迄今为止,大约有30多种工具箱面世,内容涉及自动控制、信号处理、图象处理等多种领域。
这些工具箱可以用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件实时交互功能,也可以应用于多种学科、多种领域。
与这些工具箱函数相关的使用格式可以通过Help命令得到,用户也可以针对具体系统设计自己的工具箱。
9.2系统辨识工具箱
系统辨识工具箱的主要功能包括:
①参数模型辨识。
主要模型有ARX、ARMAX、BJ模型,以及状态空间和输入误差等模型类的辨识。
②非参数模型辨识。
③模型的验证。
对辨识模型的仿真,将真实输出数据与模型预测数据比较,计算相应的残差。
④基于递推算法的ARX、ARMAX模型的辨识。
⑤各种模型类的建立和转换函数。
⑥集成多种功能的图形用户界面。
该界面以图形的交互方式提供模型类的选择和建立、输入输出数据的加载和预处理,以及模型的估计等。
9.2.1 系统辨识原理及辨识模型简介
系统辨识的主要内容包括:实验设计,模型结构辨识,模型参数辨识,模型检验。
常用的模型类有:
(1)参数模型类
利用有限的参数来表示对象的模型,在系统辨识工具箱中的参数模型类有:ARX模型、ARMAX模型、BJ(Box-Jenkins)模型、状态空间模型和输入误差模型。
通常都限定为以下特殊的情形:
① ARX模型:()()()()()
=-+(9.8)
A q y t
B q u t nk e t
② ARMAX模型:()()()()()()
=-+(9.9)
A q y t
B q u t nk
C q e t
③ BJ模型:()[()/()]()[()/()]()
=-+(9.10) y t B q F q u t nk C q D q e t
=-+(9.11) ()()[()/()]()[()/()]()
A q y t
B q F q u t nk
C q
D q e t
④输入误差模型:()()[()/()]()()
=-+(9.12)
A q y t
B q F q u t nk e t
⑤ 状态空间模型:(1)()()
()()()()x t Ax t Bu t y t Cx t Du t v t +=+=++ (9.13)
其中A,B,C,D 为状态空间模型的系数矩阵,v(t)为外界噪声信号。
(2) 非参数模型类
非参数模型主要包括脉冲响应模型和频域描述模型。
如图9.3所示,假设待辨识的系统为线性系统,u 为输入,y 为输出,v 为噪声,则可以得出输入输出的关系如下:
()()()()y t G q u t v t =+ (9.14)
其中:111()()()()()();(1)
k k k G q u t g k u t k G q g k q q u t ∞=∞--==-==-∑∑ q 为时间平移算子,序列g(k)称为对象的脉冲响应模型,v(t)是不可测量的附加干扰噪声。
9.2.2 系统辨识工具箱图形界面
在MATLAB 的命令窗口中键入ident 进入系统辨识工具箱的图形界面,如图9.4所示。
除此之外,MATLAB 还提供了以命令和函数的方法提供系统辨识工具。
(1) 数据视图
数据视图主要完成输入输出数据的导入及绘图,位于图9.4的左边(Data Views )。
选择import data 列表框中的“Time domain data”可以进入数据的导入界面,如图9.5所示。
u v y 图9.3 线性对象
图9.4 系统辨识工具箱的图形界面 图9.5 导入数据的窗口
在图9.5所示的对话框中,可以指定输入输出的变量名称即可导入输入输出数据,还可指
定采样周期,并为数据命名。
导入数据后,可以通过图形界面对这些数据进行处理。
(2)操作选择
在图形界面的中间部分为数据操作(Operation)部分,包括两个下拉式列表框。
图形界
面的上方的是预处理(Preprocess)操作,可以对数据进行相关操作,如:消除趋势、滤波、
选择输入输出通道等。
图形界面的下方是进行估计(Estimate)操作,可以选择模型的类型,
并通过相应的对话框输入模型阶次等信息。
此外,还可以将视图区的图表拖动至两个下拉列表之间的区域,使该图表所表示的数据
成为当前工作的数据,不用的数据可以拖入下方的垃圾桶“Trash”内。
(3)模型视图
即模型视图区。
在此区域可以选择和切换不同
的模型,进行模型的验证和特征曲线的绘制等。
模型视图的下方有许多复选框,供用户查看辨
识输出曲线及其它的特征曲线,功能见表9.1。
下面通过MATLAB提供的实例来说明系
统辨识工具箱的功能和使用方法。
例9.8 以MATLAB的demo系统提供的干发器(dryer)模型为例,输入为电源电压信号,
输出为气流的温度。
①在MATLAB的命令窗口键入:
load dryer2
系统自动将u2和y2两个变量装载到MATLAB的“workspace”中,u2为输入,y2为输出。
②在图9.5所示对话框中,分别将u2、y2填入“input”、“output”旁的文本框中,如果
MATLAB的“workspace”中已有待辨识模型的输入输出数据向量,也可填入此处用于辨识;在“Sampling interval”中输入采样周期:0.08,并可在“Data name”旁的文本框为数据命名;点击“Import”按钮后数据以图标的形式显示在视图中,如图9.6所示。
点击工具箱界面(图9.4)数据视图下方的“Time plot”复选框可以打开随时间变化的曲线,
如图9.7所示。
③如果要消除数据序列中的平均值(constant level)可返回工具箱界面(图9.4)窗口
在“Preprocess”下拉列表中选择“Remove means”,此时在数据视图区出现新的数据dyrd,同时
新数据随时间变化的曲线也会自动地加入图9.7中,如图9.8所示;双击数据视图中任一图
表可以查看其相应的信息。
④在工具箱界面(图9.4)窗口“Preprocess”下拉列表中选择“Select range…”后打开一
个新的图形窗口。
在此新窗口中可以选择数据的一部分用于模型估计,可以用鼠标拖动选择
或者直接键入时间范围,如0-50,选好后点击“Insert”按钮返回,此时在数据视图中生成一个
图9.7 信号随时间的变化曲线图9.6 导入数据后的图形界面
图9.8 消除平均值后的图形界面及相应的曲线
新的数据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
“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 多项式格式。
多项式的系数按降幂排列储存在一个行向量中。
例如,1212()1n n A q a q a q a q ---=++++可表示为:A = [1 a1 a2 ... an]
系统中的延时可在多项式B(q)前加零,例如对于如下的ARX 模型:
() 1.5(1)0.7(2) 2.5(2)0.9(3)y t y t y t u t u t --+-=-+- (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)
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模型有如下形式:
1201()(1)(2)()()(1)()()na nb y t A y t A y t A y t na B u t B u t B u t nb e t +-+-+
+-=
+-+-+ (9.16)
其中系数A k 为ny*ny 维矩阵,B k 为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 模型参数a i 和b i 进行估计可使用函数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 =
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 可以处理一般的多输入,单输出系统模型:
1111()()()()()()()()()()()
nu nu nu nu B q B q C q A q y t u t nk u t nk e t F q F q D q =-++-+ (9.17) 这里的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) 状态空间模型
① 构造状态空间模型:idss 模型 定义具有如下形式的状态空间模型结构:
()()()()()()()()(0)0
x kT T Ax kT Bu kT Ke kT y kT Cx kT Du kT e kT x x +=++=++= (9.18) 或 ()()()()
()()()()(0)0
x t Ax t Bu t K t y t Cx t Du t t x x ωω=++=++= (9.19)
定义式(9.18)离散模型的语法结构为:m= idss(A,B,C,D,K,X0,'Ts',T),若令T=0,则表示连续时间模型(见式9.19)即:m=idss(A,B,C,D,Kt,X0,'Ts',0)
② 黑箱。
离散时间参数化的模型:
假设对离散时间状态空间模型的内部结构一无所知,如果是线性系统,可以使用下列简单的命名方法,可以对1-10阶的系统进行估计:m = pem(Data)
对于某一阶次n 的黑箱模型可以使用:m = pem(Data,n)
也可以指定一系列不同的阶次nn = [n1,n2,...,nN]进行辨识并绘图比较来决定所需的阶次:m = pem(Data,'nx',nn)
所有这些黑箱模型可以由子空间方法进行初始化,可以使用n4sid 命令对状态空间模型进行估计:m = n4sid(Data,n)
③ 离散/连续时间系统的参数结构模型:
对于给定结构的状态空间模型,主要讨论带自由参数的idss 模型。
一旦定义了结构为ms ,则可以通过如下命令估计它的参数:m = pem(Data,ms)
例9.10 估计一个系统的自由参数 A=[-0.2 0;0 -0.3]; B=[2;4]; C=[1 1 ];D=0; m0=idss(A,B,C,D); m0.As=[NaN 0;0 NaN]; m0.Bs=[NaN; NaN]; m0.Cs=[1 1]; m0.Ts=0;
u=iddata([],idinput([300,1])); e=iddata([],randn(300,1));
y=sim(m0,[u,e]);
z=[y,u];
plot(y)
m=pem(z,m0)
9.3 模糊逻辑工具箱
针对模糊数学的广泛应用,MathWorks公司在其MATLAB中加入了Fuzzy Logic工具箱,该工具箱由长期从事模糊逻辑和模糊控制的专家和技术人员编制,提供了强大的功能。
①图形化的系统设计界面。
②支持模糊逻辑中的高级技术,如自适应神经-模糊推理系统、用于模式识别的模糊聚类技术和模糊推理方法选择等。
③集成的仿真和代码生成功能,实现了MATLAB模糊逻辑控制工具箱和SIMULINK的无缝连接,还可以通过Real-Time Workshop生成ANSIC原代码有利于实际应用。
④用户完成模糊逻辑系统的设计后,可以将设计结果以ASCⅡ码的形式保存。
模糊工具箱提供了三种类型的工具。
①命令行函数。
通过调用系统的命令函数或者用户自定义的函数,这些函数通常是以MATLAB的M文件形式来完成模糊逻辑算法;
②图形界面工具。
通过该工具用户可以在基于图形界面的环境下直观方便地设计、分析和实现模糊推理系统;
③仿真模块与实例。
提供在Simulink环境下实现高速模糊逻辑推理的设计和使用。
9.3.1.模糊逻辑工具箱的图形界面
用fuzzy命令打开FIS编辑
器的图形界面,见图9.14,通
过此界面可以定义整个模糊系
统。
默认的是,界面提供
Mamdani法的单输入单输出;
OR和AND算子分别由max和
min实现,蕴含关系用min,合
成规则用max,用重心法
(centroid)去模糊化。
下面以一个调节一阶过程
的模糊控制器来说明模糊工具
箱图形界面。
考虑传递函数:
1
1
0.8()10.5z H z z
--=- (9.18) 令r(t)为给定信号,y(t)为离散输出。
模糊控制器有两个输入:误差e(t)及它的变化Δe(t),其中:
()()()()()(1)
e t y t r t e t e t e t =-∆=-- (9.20)
这两个输入量分别用变量error 和d_error 表示,并定义在三个模糊集上,其高斯隶属度函数定义在[-10 10]区间。
(1) 在图9.14所示窗口中,在Edit 菜单下选择“Add input”添加一个输入量。
用鼠标选中输入输出变量后,可以指定其变量名称或max-min 、sum-prod 等方法。
(2) 图9.15是定义在[-10 10]区间上的误差变量,并使用三个高斯隶属函数,分别命名为Negative 、Nil 和Positive 。
(3) 定义了全部的输入输出变量后,在菜单View 下选择“Rules”打开规则编辑窗口,如图9.16所示,每个规则末尾有一个括号括起来的权重系数。
选中相应的规则可以对其进行修改,或者点击右键选择“Add rule ”添加规则。
在这个窗口中,还可以选择规则的编写语言种类,并通过菜单View 能够打开规则观察窗口和表面视图窗
图9.15 定义误差变量的隶属度函数编辑器
图9.17 查看规则视图窗口
口。
在规则视图窗口(见图9.17)中可以用鼠标拖拽或直接输入来调整输入向量并可观察到输出结果的表面图形和它去除离散化后的值。
在表面视图窗口可以看到随输入变量变化的输出变量的表面图形。
本例的系统可以通过主窗口File 菜单下的“Export to Disk ”导出至一个FIS 模糊调节器扩展文件中,也可以以模糊矩阵的形式导出至工作变量空间(workspace )中。
导出的文件能够在集成的调试编辑器中得到模糊控制器的语言描述。
使用如下命令进入调试编辑:
>> edit ex_fuzzy.fis
回车后在编辑器(Editor )显示其对应的fis 文本:
[System] Name='ex_fuzzy' Type='mamdani' Version=2.0 NumInputs=2 NumOutputs=1 NumRules=9 AndMethod='min' OrMethod='max' ImpMethod='min' AggMethod='max'
DefuzzMethod='centroid' [Input1] Name='error' Range=[-10 10] NumMFs=3
MF1='Negative':'gaussmf',[4.247 -10] MF2='Nil':'gaussmf',[4.247 -1.11e-016] MF3='Positive':'gaussmf',[4.247 10] [Input2] Name='d_error' Range=[-10 10] NumMFs=3
MF1='Negative':'gaussmf',[4.247 -10] MF2='Nil':'gaussmf',[4.247 -1.11e-016]
MF3='Positive':'gaussmf',[4.247 10]
[Output1]
Name='shuchu'
Range=[-10 10]
NumMFs=5
MF1='NG':'trimf',[-15 -10 -5.001]
MF2='N':'trimf',[-9.999 -5 -0.000717]
MF3='Z':'trimf',[-4.999 -5.551e-017 4.999]
MF4='P':'trimf',[0.000717 5 9.999]
MF5='PG':'trimf',[5.001 10 15]
[Rules]
1 1, 5 (1) : 1
1 2, 4 (1) : 1
1 3, 3 (1) : 1
2 1, 4 (1) : 1
2 2,
3 (1) : 1
2 3, 1 (1) : 1
3 1, 3 (1) : 1
3 2, 1 (1) : 1
3 3, 2 (1) : 1
通过主窗口File菜单下的“Export to Worksapce”导出至工作变量空间中,如图9.18所示,并可以为该矩阵变量命名。
可以在SIMULINK模型或M文件中应用这个模糊推理系统。
图9.18 导出模糊结构到工作变量空间图9.19 SIMULINK中的模糊逻辑控制器模块
9.3.2 在SIMULINK中应用模糊推理系统
MATLAB的模糊逻辑工具箱提供了与
SIMULINK的无缝连接,建立了模糊逻辑推
理系统后,可以在SIMULINK中对其仿真。
SIMULINK 中的Fuzzy logic toolbox 中有相应的模糊逻辑控制器模块,如图9.19所示。
在前例的图形界面中所设计的模糊推理系统已经导出为一个FIS 模糊调节器扩展文件,名为ex_fuzzy.fis ,并且以模糊矩阵ex_fuzzy 的形式导出至工作变量空间。
因此双击SIMULINK 创建的模糊逻辑控制器的图标,在空白处输入该模糊矩阵的名称:ex_fuzzy ,见图9.20。
仍然以前述一阶过程为例,过程的控制量等于模糊控制器的输出加上前一个采样时刻的
控制量。
建模如图9.21所示。
其中转换单元(Switch )是为了比较不同的模糊增益下控制系统的性能,此处转换时刻取t=300。
仿真控制参数设置起止时间为0~600,并采用离散变步长算法。
当输入目标信号为方波信号时,仿真过程输出信号与输入信号曲线如图9.22,当t>300时即增益为0.8时响应速度较快。
图9.21 在SIMULINK 中应用模糊推理系统
图9.22 输出信号与目标输出信号曲线
scope3中uf对应的是模糊控制器的输出,ut为应用的控制信号,它们的曲线如图9.23。
当输入目标更换为正弦信号时,t>300时即增益为0.8时稳态误差变小,见图9.24。
9.3.3常用模糊工具箱命令说明
(1) GUI工具
Anfisedit 打开ANFIS编辑器GUI
Fuzzy 调用基本FIS编辑器
Mfedit 隶属度函数编辑器
Ruleedit 规则编辑器和语法解析器
Ruleview 规则观察器和模糊推理方框图
Surfview 输出曲面观察器
(2) 隶属度函数
dsigmf 两个sigmoid型隶属度函数之差组成的隶属度函数
gauss2mf 建立两边型高斯隶属度函数
gaussmf 建立高斯曲线隶属度函数
gbellmf 建立一般钟型隶属度函数
pimf 建立Π型隶属度函数
psigmf 通过两个sigmoid型隶属度函数的乘积构造隶属度函数
smf 建立S-型隶属度函数
sigmf 建立Sigmoid型隶属度函数
trapmf 建立梯形隶属度函数
trimf 建立三角形隶属度函数
zmf 建立Z-型隶属度函数
(3) FIS数据结构管理
addmf 向模糊推理系统(FIS)的语言变量添加隶属度函数
addrule 向模糊推理系统(FIS)的语言变量添加规则
addvar 向模糊推理系统(FIS)添加语言变量
defuzz 对隶属度函数进行反模糊化
evalfis 完成模糊推理计算
evalmf 通过隶属度函数计算
gensurf 生成一个FIS输出曲面
getfis 得到模糊系统的属性
mf2mf 在两个隶属度函数之间转换参数
newfis 创建新的FIS
parsrule 解析模糊规则
plotfis 绘制一个FIS
plotmf 绘制给定语言变量的所有隶属度函数的曲线
readfis 从磁盘装入一个FIS
rmmf 从FIS中删除某一语言变量的某一隶属度函数
rmvar 从FIS中删除某一语言变量
setfis 设置模糊系统的属性
showfis 以分行的形式显示FIS结构的所有属性
showrule 显示FIS的规则
writefis 保存FIS到磁盘上
(4) 先进技术
anfis Sugeno型模糊推理系统(FIS)的训练程序(只适用于MEX)fcm 模糊C均值聚类
genfis1 不使用数据聚类方法从数据生成FIS结构
genfis2 使用减法聚类方法从数据生成FIS结构
subclust 用减法聚类方法寻找聚类中心
(5) Simulink仿真块
fuzblock Simulink模糊逻辑控制器库
sffis 用于Simulink的模糊推理S-函数
(6) 演示(Demo)
defuzzdm 反模糊化方法
fcmdemo FCM聚类显示(二维)
fuzdemos 列出所有模糊逻辑工具箱的演示程序
gasdemo 使用子聚类节省燃料的ANFIS演示
juggler 带规则观察器的弹球游戏器
invkine 单机械臂倒立摆运动
irisfcm FCM聚类显示(四维)
noisedm 自适应消除噪声
slbb 球和棒控制(Simulink)
slcp 倒立摆控制(Simulink)
sltank 水位控制(Simulink)
sltankrule 带规则观察器的水位控制(Simulink)
sltbu 卡车入库(只有Simulink方式)
9.4 神经网络工具箱
神经网络是上世纪80年代末期发展起来的一种实用的多学科交叉技术,是自动控制领域的前沿学科之一,为解决复杂的非线性、不确定、不确知系统的控制问题开辟了新的途径。
这里主要介绍的是神经网络理论与控制理论的相结合。
神经网络主要用于解决以下几类问题:模式信息处理与模式识别;最优化问题;复杂控制;信号处理与预测;信息的智能化处理等。
现有MATLAB中的神经网络工具箱几乎涉及了现有的神经网络的所有成果,涉及到的模型有:
①感知器;
②线性网络;
③BP(误差反向传播)网络;
④径向基网络;
⑤自组织网络;
⑥反馈网络。
对于以上几种网络模型,神经网络工具箱集成了多种学习算法,为用户使用神经网络实现算法提供了方便,并且还包括了大量生动的示例程序(demo),使用户或初学者更好地理解神经网络各种算法。
神经网络用于控制领域,主要是为了解决复杂的非线性、不确定、不确知问题。
由于神经网络具有模拟人的部分智能的特性,如学习能力和自适应性,从而使神经网络对变化的环境具有自适应的能力,并且基本上不依赖于模型。
到目前为止,神经网络在控制领域内的各种模型都有所应用,核心算法就是利用神经网络的高度非线性来逼近各种难控模型,再通过一定的校正方法来达到控制系统的设计指标。
常用的神经网络控制方式有:利用神经网络进行PID控制、直接逆动态控制、模型参考自适应控制、内模控制、前馈反馈控制、预测控制等。
9.4.1 图形用户界面简介
MATLAB7.x的版本中神经网络工具箱提供了图形用户界面,使用户在图形界面上通过与计算机的交互设置进行神经网络的设计和仿真,这样神经网络的设计和仿真则变得简单易学。
在MATLAB命令窗口输入nntool,就可打开Network/Data Manager(网络/数据管理器)
窗口,如图9.25所示。
图9.25 神经网络工具箱图形界面
图9.25所示窗口共有7个显示区域和2个按钮区域,分别说明如下:
(1) 显示区域
Input区:显示用户定义的输入向量名称;
Target区:显示用户定义的目标向量名称;
Input Delay States区:显示用户定义的输入延迟参数变量名称;
Networks区:显示用户定义的神经网络名称;
Outputs区:显示网络的输出向量名称;
Errors区:显示网络的训练误差变量的名称;
Layer Delay States区:显示用户指定的网络层延迟参数变量名称。
(2) 按钮区域
①Networks and Data按钮区
New Data…:单击此按钮可弹出Create New Data窗口,在新窗口中可以定义各种数据类型的变量名和数据值;
New Netw ork…:单击此按钮可弹出Create New Network窗口,在新窗口中可以定义神经网络名称、类型以及网络结构;
Import…:单击此按钮可弹出Import or Load Network/Data manager窗口,可从工作区(Workspace)或磁盘文件导入神经网络或数据;
Export…:单击此按钮可弹出Export or Save Network/Data manager窗口将目前的Network/Data Manager窗口中的变量导出到工作区(Workspace)或存到磁盘文件中;
View:用来查看区域中被选中的变量或网络的具体内容;。