nullMATLAB应用技术MATLAB应用技术清华大学出版社王忠礼 段慧达 高玉峰编著 null6 MATLAB与模糊控制系统null6.1 模糊系统的MATLAB 实现 6.1.1 模糊集简介模糊集是一种边界不分明的集合,模糊集与普通集合既有区别又有联系。 2 模糊集的表示 1模糊概念模糊集菜用隶属度来表示,论域X上的一个模糊集A,对于任意,都指定了一个数,叫做x对A的隶属程度 称做A的隶属函数。隶属度函数有以下11种:
(1)高斯型隶属度函数
(2) 双侧高斯型隶属度函数(3) 钟形隶属度函数null(4)Sigmoid函数型隶属度函数(5)差型sigmoid隶属度函数(6) 积型sigmoid隶属度函数(7) Z形隶属度函数(8) Ⅱ形隶属度函数(9) S形隶属度函数(10) 梯形隶属度函数(11) 三角形隶属度函数null3模糊逻辑运算与运算 或运算 非运算 直积 逻辑与(A AND B) 逻辑或(A OR B) 逻辑非(NOT A) 普通逻辑:模糊逻辑null4 模糊规则模糊 推理系统工程中,模糊规则以模糊语言 的形式描述人类的经验和知识,规则是否正确反映人类专家的经验和知识更新,是否能反映对象的特性,直接决定了模糊推理系统的性能,通常通过模糊规则的形式是“if…then”,前提由对模糊语言变量的语言什描述构成,如“温度较高”,“压力较低”等,结论由对输出模糊语言变量表示成输入量的精确什的组合,模糊规则的这种形式化表示的符合人们通过自然对许多知识的描述和记忆习惯的。 模糊规则的建立 ①总结操作人员工、专家的经验和知识。 ②基于过程的模糊模型。 ③基于学习的方法。 null最简单的if…then规则的形式是:“如果x是A,则y是B。”复合型的if…then规则的形式很多,例如:
“ if m是A且x 是B then y 是C,否则z是D” ;
“ if m是A且x 是B 且 y 是C,then z是D” ;
“ if m是A或x 是B then y 是C,或z是D” ;
“ if m是A且x 是B then y 是C,且z是D” ;
这里A,B,C,D分别是论域M,X,Y,Z,中模糊集的主义值,if 部分是前提或前件,then 部分是结论或后件。 输入模糊化
确定出if…then规则前提中每个命题或断言为真的程度(即隶属度)。
应用模糊算子
召唤果规则的前提有几部分,则利用模糊算子可以确定出整个前提为真的程度(即整个前提的隶属度)。
应用蕴含算子
由前提的隶属度和蕴含琥子,可以确定出结论为真的程度 (即结论的隶属度)。null5模糊推理模推理是采用模糊逻辑由给定的输入到输出的映射过程。模糊推理包括五个方面:
(1)输入变量模糊化,即把确定的输入转化为由隶属度描述的模糊集。
(2)在模糊规则的前件中应用模糊算子(与、或、非)。
(3)根据模糊蕴含运算由前提推断结论。
(4)合成每一个规则的结论部分,得出总的结论。
(5)反模糊化,即把输出的模糊量转化为确定的输出。null6 模糊控制在自动控制理论中,控制器的
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
与综合依赖于精确的数学模型。而系统在实际运行过程中,人们将观察到的过程输出与设定值比较,得到过程输出偏离设定值程度的模糊语义描述或过程输出偏离设定值变化快慢的模糊语义描述,经逻辑推理得出控制量的模糊量:“适量减少燃料”,经反模糊化且,转化为一精确的控制量,实现整个控制过程,以模糊集和模糊推理为基础,对上述手工操作过程进行建模,即可得到期模糊控制器。 null6.1.2 模糊推理系统与MATLAB的应用1 模糊推理系统结构最常见的模糊推理系统的三类:
1、纯模糊逻辑系统
2、Sugeno型模糊逻辑系统
3、Mamdani型模糊系统
null2 Mamdani型模糊逻辑系统构建Mamdani型是典型的模糊逻辑系统,MATLAB模糊逻辑工具箱中的模糊推理系统有五个过程:输入变量的模糊化、模糊关系运算、模糊合成运算、不同规则结果的综合、去模糊化。(1) 输入模糊化(2) 输入模糊集合的合成运算 (3)模糊蕴含方法(4)输出的合成Aggregation (5)逆模糊化(解模糊化)null6.1.3 模糊推理系统的MATLAB模糊工具箱的图形界面实现 模糊推理系统可通过MATLAB模糊工具箱的图形界面工具来实现,方法简单并且直观,也可利用MATLAB提供的命令行方式的模糊逻辑函数编辑实现,有利于比较复杂的模糊推系统。 1 图形界面工具箱简介MATLAB模糊工具箱提供的图形化工具有五类:
模糊推理系统编辑器Fuzzy;
隶属度函数编辑器Mfedit;
模糊规则编辑器Ruleedit;
模糊规则观察器Ruleview;
模糊推理输入输出曲面视图Surfview。null2模糊推理系统编辑器(Fuzzy)执行Fuzzy命令 null3.隶属度函数编辑器(Mfedit)命令窗口键入”mfedit” null4.模糊规则编辑器(Ruleedit)null5.模糊规则观察器(Ruleview)命令窗口键入“ruleview” null6.模糊推理输入输出曲面视图(Surfview)命令窗口键入“surfview” null6.1.4模糊逻辑工具箱与Simulink的接口1 MATLAB的模糊的图形化系统建模和仿真工具Simulink 当在模糊逻辑工具箱中建立了模糊推理系统后,首先,对模糊逻辑工具箱中建立的模糊推理系统后生成FIS文件,然后,在MATLAB命令窗口键入命令Simulink或是直接点击工具栏上的Simulink图标,可以打开Simulink模块库浏览环境 ,在Simulink模块库浏览环境里通过选择菜单【File】、【New】、【Model】或直接点击工具栏上的相应图标来创建一个新的模型。在新的仿真模型编辑主窗口中搭建仿真控制系统模型。 null例 设计典型二阶环节,
的模糊控制器,使系统输出尽快跟随系统输入。null设系统输入为R=10,系统输出误差为e ,误差导数为de,则可根据系统输出的误差和误差导数设计出模糊控制器(FC)。FC的输入为e 和de的模糊量,输出为u 的模糊量,论域分别为:[-11]、[-11]、[-10 10],其模糊语言分别为:
E : “大 B”;“小 S”
de:“正 P”“零 Z”、“负 N”;
u :“负大NB”、“负小NS”、“零ZR”、“正小PS”、“正大PB”。null使用MATLABL图形界面工具设计模糊控制器FC:
确定隶属度函数
确定模糊控制器规则
将编制好的文件生成FIS文件
上述过程按前面讲解完成,该例子的文件名为 GH.fis;
在MATLAB下的Simulink环境中建立二级系统的仿真模型如下:null将MATLAB下的GH.fis文件导入Simulink模型中,作为的模糊控制器FC的参数: 步骤:
(1)选取择上图中的模糊模块控制器(双击其图标),打开对话框并给导入到仿真系统中的模糊控制器命名为gh.fis(2)在MATLAB环境下使用命令: gh=read(‘GH.FIS’)执行即可
(3)模型中变量修改使用FIS中的Wizard模块将编制的模糊控制器
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
化
null 模糊控制器参数类型转换图 null系统输出null6.2 MATLAB模糊逻辑工具箱命令行函数应用6.2.1 MATLAB模糊逻辑工具箱函数 GUI(图形用户界面)工具null隶属度函数null FIS数据结构管理null 先进技术null Simulink仿真方框null其余函数null 模糊 系统演示程序null6.2.2 MATLAB命令行函数使用1、隶属度函数(1)dsigmf
功能:由两个S形隶属度函数的差构成的隶属度函数。
格式:y=dsigmf(x,[a1 c1 a2 c2])(2)Gauss2mf
功能:联合高斯(Gaussian)型隶属函数
格式:y=gauss2mf(x,[sig1 c1 sig2 c2])(3)gaussmf
功能:高斯(Gaussian)型隶属度函数。
格式:y=gaussmf(x,[sig c])null(4)gbellmf
功能:广义钟形隶属度函数。
格式:y=gbellmf(x,params)(5)primf
功能:Ⅱ形隶属度函数。
格式:y=pimf(x,[a b c d])(6)psigmf
功能:由两个S形隶属度函数的积成的隶属度函数。
格式:y=psigmf(x,[a1 c1 a2 c2])(7)smf
功能:S状隶属度函数。
格式:y=smf(x,[a b])null(8)Sigmf
功能:S形隶属度函数。
格式:y=sigmf(x,[a c])(9)trapmf
功能:梯形隶属度函数。
格式:y=trapmf(x,[a b c d])(10) trimf
功能:三角形隶属度函数。
格式:y=trimf(x,params)
y=trimf(x,[a b c])(11) zmf
功能:Z形隶属度函数。
格式:y=zmf(x,[a b])null2.FIS数据结构管理(1)addmf
功能:隶属度函数添加到FIS(模糊推理系统)。
格式:a=addmf(a,´varType´,varIndex,´mfName´,´mfType´,mfParams)(2)addrule
功能:在FIS中添加规则。
格式:a=addrule(a,ruleList)(3)addvar
功能:在FIS中添加变量:
格式:a=addvar(a, ´varType´, ´varName´,varBounds)null(4)defuzz
功能:反模糊化的隶属度函数。
格式:out=defuzz(x,mf,type)(5)evalfis
功能:完成模糊推理计算。
格式:output=evalfis(input,fismat)
Output=evalfis(input,fismat,numPts)
[output,IRR,ORR,ARR]=evalfis(input,fismat)
[output,IRR,ORR,ARR]=evalfis(input,fismat,numPts)(6)evalmf
功能:普通隶属度函数的计算。(7)gensurf
功能:产生FIS输出曲面。null(8)getfis
功能:获取模糊系统的特性。(10)newfis
功能:建立新的FIS.
格式:a=newfis(fisName,fisType,andMethod,orMethod,impMethod,
aggMethod,defuzzMethod)(9)mf2mf
功能:在隶属度函数之间进行参数变换。
格式:outParams=mf2mf(inParams,inType,outType)(11) parsrule
功能:模糊规则解析。
格式:fis2=parsrule(fis,txtRuleList)
fis2=parsrule(fis,txtRuleList,ruleFormat)
fis2=parsrule(fis,txtRuleList,ruleFormat,lang)null(12)plotfis
功能:绘图表示FIS。
格式:plotfis(fismat)(13)plotmf
功能:绘制出给定变量的所有隶属度函数。
格式:plotmf(fismat,´varType´,varIndex)(14)readfis
功能:从磁盘中装入FIS。
格式:fismat=raedfis(´filename´)(15)rmmf
功能:从FIS中删除隶属度函数。
格式:fis=rmmf(fis,´varType´,varIndex,´mf´,mfIndex)null(16) rmvar
功能:从FIS中删除变量。
格式:[fis2,errorStr]=rmvar(fis, ´varType´,varIndex)
fis2= rmvar(fis, ´varType´,varIndex)(17) setfis
功能:设置模糊系统的特性。
格式:a=setfis(a,´fisPropname´,´newfisProp´);
a= setfis(a,´varType´,varIndex,´varPropname´,´newvarProp´);
a= setfis(a,´varType´,varIndex,´mf´,mfIndex,´mfPropname´,´newmfProp´); (18) showfis
功能:显示带注释的FIS。
格式:showfis(fismat)null19.Showrule
功能:显示FIS规则。
格式:showrule(fis)
showrule(fis,indxList)
showrule(fis,indexList,format)
showrule(fis,indexList,format,Lang)null3、先进技术 (1)anfis
功能:Sugeno型FIS的训练程序。(2)fcm
功能:模糊C均值聚类。
格式:[center,U,obj_fcn]=fcn(data,cluster_n)(3)genfis1
功能:从未加聚类的数据中产生FIS 结构。
格式:fismat=genfis1(data)(4)genfis2
功能:利用减法聚类从数据中产生FIS结构。
格式:fismat=genfis2(Xin,Xout,radii)
fismat=genfis2(Xin,Xout,radii,xBounds)
fismat=genfis2(Xin,Xout,radii,xBounds,options)null(5)Subclust
功能:找出减法聚类的聚类中心。
格式:[C,S]=subclust(X,radii,xBounds,options)null4、Simulink 仿真方框(1)fuzblock
功能:模糊逻辑控制器框图仿真。
格式:fuzblock(2) sffis
功能:Simulink中的模糊推理S函数。
格式:output=sffis(t,x,u,flag,fismat)null5、其余函数(1)Convertfis
功能:FIS结构的版本变换。
格式:fis_new=converfis(fis_old)(2)findcluster
功能:模糊C均值和减法聚类的交互聚类GUI。
格式:findcluster(3)fuzarith
功能:完成模糊算术运算。
格式:C=fuzarith(X,A,B,operator)null(4)mam2sug
功能:将Mamdani型的FIS变换成Sugeno型FIS。(5)fuzdemos
功能:模糊逻辑工具箱演示程序列表。
格式:fuzdemosnull6.2.3 MATLAB模糊逻辑工具箱命令函数应用实例设计典型二阶环节:
的模糊控制器,使系统输出尽快跟随系统输入。null隶属度函数 误差隶属度函数 误差变化率隶属度函数 null输出隶属度函数 null FC的模糊推量规则表nullMATLAB程序如下
num=20;
den=[1.6 4.4 1];
[a1 b c d]=tf2ss(num,den);
x=[0;0];
T=0.01;h=T;
N=250;
R=1.5*ones(1,N);参考输入
%定义输入输出变量与隶属度函数
a=newfis('Simple');
a=addvar(a,'input','e',[-6 6]);
a=addmf(a,'input',1,'NB','trapmf',[-6,-6,-5,-3]);
a=addmf(a,'input',1,'NS','trapmf',[-5,-3,-2,0]);
a=addmf(a,'input',1,'ZR','trimf',[-2,0,2]);
a=addmf(a,'input',1,'PS','trapmf',[0,2,3,5]);
a=addmf(a,'input',1,'PB','trapmf',[3,5,6,6]);
a=addvar(a,'input','de',[-6,6]);
a=addmf(a,'input',2,'NB','trapmf',[-6,-6,-5,-3]);
a=addmf(a,'input',2,'NS','trapmf',[-5,-3,-2,0]);
a=addmf(a,'input',2,'ZR','trimf',[-2,0,2]);
a=addmf(a,'input',2,'PS','trapmf',[0,2,3,5]);
a=addmf(a,'input',2,'PB','trapmf',[3,5,6,6]);
a=addvar(a,'output','u',[-3,3]);
a=addmf(a,'output',1,'NB','trapmf',[-3,-3,-2,-1]);
a=addmf(a,'output',1,'NS','trimf',[-2,-1,0]);
a=addmf(a,'output',1,'ZR','trimf',[-1,0,1]);
a=addmf(a,'output',1,'PS','trimf',[0,1,2]);
a=addmf(a,'output',1,'PB','trapmf',[1,2,3,3]);
%模糊规则矩阵null%模糊规则矩阵
rr=[5 5 4 4 3
5 4 4 3 3
4 4 3 3 2
4 3 3 2 2
3 3 2 2 1];
rr=zeros(prod(size(rr)),3);
k=1;
for i=1:size(rr,1)
for j=1:size(rr,2)
r1(k,:)=[i,j,rr(i,j)];
k=k+1;
end
end
[r,s]=size(r1);
r2=ones(r,2);
rulelist=[r1,r2];
a=addrule(a,rulelist);null%模糊控制系统仿真
e=0;
de=0;
ke=30;
kd=20;
ku=1;
for k=1:N
e1=ke*e;
de1=kd*de;
if e1>=6
e1=6;
elseif e1<=-6
e1=-6;
end
if de1>=6
de1=6;
elseif de1<=-6
de1=-6;
endnull%模糊推理,计算被控对象输入
in=[e1 de1];
u=ku*evalfis(in,a);
uu(1,k)=u;
%控制作用于被控系统,计算系统输出
k0=a1*x+b*u;
k1=a1*(x+h*k0/2)+b*u;
k2=a1*(x+h*k1/2)+b*u;
k3=a1*(x+h*k2)+b*u;
x=x+(k0+2*k1+2*k2+k3)*h/6;
y=c*x+d*u;
yy(1,k)=y;
%计算系统输出误差及误差变化率
e1=e;
e=y-R(1,k);
de=(e-e1)/T;
end
%模糊控制输出曲线
kk=[1:N]*T;
figure(1);
plot(kk,R,'k',kk,yy,'r');
grid onnull系统阶跃响应曲线