1、MATLAB含糊逻辑工具箱工具命令行函数(以.m文件存放)图形交互工具(GUIGraphical User Interface)(图形用户界面)接口仿真逻辑模块(Simulink环境)建立含糊逻辑推理系统图形交互工具箱提供图形化工含有五类:含糊推理系统编辑器Fuzzy隶属度函数编辑器Mfedit(Membership function)含糊规则编辑器Ruleedit含糊规则观察器Ruleview含糊推理输入输出曲面视图Surfview(Surface)第1页第2页 含糊推理系统编辑器Fuzzy处理最顶层构建问题,比如输入输出变量数目、变量名等激活(进入)方法:命令窗口(command wind
2、ow)执行Fuzzy命令。激活含糊推理系统系统编辑器:第3页组成输入含糊变量图形框双击Mfedit含糊规则图形框双击Ruleedit输出含糊变量图形框双击Mfedit基本属性第4页基本属性包含:1.含糊集合合成运算(连接词运算)andmin(最小法)prod(乘积法)第5页 ormax(最大法)prober(概率法)prober(a,b)=a+b-ab第6页2.蕴涵计算(Implication)minprod(乘积法)第7页3.输出合成计算Aggregation(含糊规则综合采取方法)Aggregationmaxprober(概率法)sum(求和法)prober(a,b)=a+b-ab第8页4
3、.逆含糊化计算(Defuzzification)centroid(重心法)mom(平均最大隶属度法)som(最大隶属度函数中取最小值法)bisector(面积平分法)lom(最大隶属度函数中取最大值法)在命令窗口键入mfedit可激活隶属度函数编辑器第9页MATLABFIS结构和存放1、FIS(含糊推理系统)结构含糊推理系统是以一个FIS结构来表示和存放访问方法GUI工具函数结构名.组员名2、存放(.fis文件)访问readfis读writefis写第10页命令函数1、隶属度函数函数trimf(表示triangular membership function)格式:y=trimf(x,a b
4、c)其中:参数x指定变量论域范围,参数a,b和c指定三角形函数形状,该函数在b点处取最大值1,a,c点为0。例:建立三角形隶属度函数并绘制曲线。x=0:0.1:10;y=trimf(x,3 6 8);plot(x,y)xlable(trimf,P=3 6 8)功效:建立三角形隶属度函数。第11页函数trapmf(trap表示trapezium梯形)格式:y=trapmf(x,a b c d)其中:参数x指定变量论域范围,参数a,b,c和d指定梯形隶属度函数形状,该函数在b,c点处取最大值1,a,d点为0。功效:建立梯形隶属度函数。例:x=0:0.1:10;y=trapmf(x,1 5 7 8)
5、;plot(x,y)xlable(trapmf,P=1 5 7 8)第12页 函数gaussmf格式:y=gaussmf(x,sig c)功效:建立高斯型隶属度函数。其中:参数x指定变量论域范围,参数c决定了函数中心点,sig决定了函数曲线宽度。高斯函数表示式为:例:x=0:0.1:10;y=gaussmf(x,2 5);plot(x,y)xlable(gaussmf,P=2 5)第13页函数zmf 格式:y=zmf(x,a b)功效:建立Z型隶属度函数。说明:曲线在(a,b)之间是光滑样条曲线,在a左段为1,b右段为0,跳跃点是(a+b)/2。参数x指定变量论域范围。例:x=0:0.1:10
6、;y=zmf(x,2 8);plot(x,y)xlable(zmf,P=2 8)第14页函数smf格式:y=smf(x,a b)功效:建立S型隶属度函数。说明:曲线在(a,b)之间是光滑样条曲线,在a左段为0,b右段为1,跳跃点是(a+b)/2。参数x指定变量论域范围。例:x=0:0.1:10;y=smf(x,2 8);plot(x,y)xlable(smf,P=2 8)第15页2、含糊逻辑系统输入输出变量及隶属度函数添加函数addvar功效:向含糊推理系统中添加语言变量。格式:a=addvar(a,varType,varName,varBounds)说明:参数列表中,a为含糊推理系统对应矩阵
7、变量名,varType用于指定语言变量类型为字符型(如input或output);varName用于指定语言变量名;varBounds用于指定语言变量论域范围。注意:对于添加到同一个含糊推理系统语言变量,按先后次序自动编号,编号从1开始,逐步递增。对于分属于输入与输出不一样语言变量则独立地分别编号。例:a=newfis(tipper);/创建并返回一个新FIS系统 a=addvar(a,input,service,0 10);getfis(a,input,1)/取得FIS部分或全部属性第16页函数addmf功效:向含糊推理系统语言变量添加隶属度函数。格式:a=addmf(a,varType,v
8、arIndex,mfName,mfType,mfParams)说明:隶属度函数只能为含糊推理系统中已经存在某一语言变量语言值添加隶属度函数。参数列表中,a为含糊推理系统对应矩阵变量名,varType指定语言变量类型字符串(如input或output);varIndex指定语言变量编号数字;mfName指定隶属度函数名称;mfType指定隶属度函数类型;mfParams指定隶属度函数参数。第17页注意:对于每个语言变量隶属度函数按该函数被添加次序编号,编号从1开始,依次递增。例:a=newfis(tipper);a=addvar(a,input,service,0 10);a=addmf(a,i
9、nput,1,poor,guassmf,1.5 0);a=addmf(a,input,1,good,guassmf,1.5 5);a=addmf(a,input,1,excellent,guassmf,1.5 10);plot(a,input,1)第18页3、FIS系统相关操作 函数newfis功效:创建并返回一个新含糊推理系统。格式:a=newfis(fisName)函数readfis功效:从磁盘中读出并返回含糊推理系统结构变量。格式:Fismat=readfis(filename)例:fismat=readfis(tipper);/tipper.fis已经存在说明:打开一个由filenam
10、e指定数据文件(.fis),并将其加载到当前工作空间(Workspace)中变量Fismat中。第19页函数getfis功效:取得含糊推理系统部分或全部属性。格式:getfis(a)/显示系统全部属性 getfis(a,fisprop)/显示系统某一属性 getfis(a,vartype,varindex,varprop)例:a=readfis(tipper);getfis(a)输出结果:Name=tipper Type=mamdani NumInputs=2 第20页例:getfis(a,input,1)注:属性为input或output时,后面第三个参数指定某一个输入或输出语言变量。输出结
11、果:Name=service NumMFs=3 MFLabels=poor good excellent Range=0 10例:getfis(a,input,1,name)输出结果:service第21页 函数showfis功效:以分行形式显示含糊推理系统矩阵全部属性。格式:showfis(fismat)函数writefis功效:将以矩阵形式保留在内存中含糊推理系统数据写入磁盘文件中。格式:writefis(fismat,filename)例:writefis(a,my_file)type my_file.fis第22页 函数setfis功效:设置、改变含糊推理系统属性。格式:FIS2=se
12、tfis(fis1,fispropname,newPropValue)说明:参数fis1指明含糊推理系统名称;fispropname指明含糊推理系统全局属性;newPropValue指明此属性新值。例:a=readfis(tipper);a2=setfis(a,DefuzzMethod,mom);Defuzzification:centroid(重心法:系统默认)mom(平均最大隶属度法)som(最大隶属度函数中取最小值法)bisector(面积平分法)lom(最大隶属度函数中取最大值法)第23页4、系统图形显示函数 函数plotfis功效:绘制含糊推理系统推理过程结构框图。例:plotfis
13、(tipper)函数plotmf功效:绘制语言变量全部语言值隶属度函数曲线。格式:plotmf(fismat,varType,varIndex)说明:参数fismat指明含糊推理系统对应矩阵变量名称;varType指明变量类型(input或output);varIndex指明输入或输出语言变量编号。例:plotmf(a,input,2)第24页5、含糊规则建立函数addrule功效:向含糊推理系统添加含糊规则。格式:a=addrule(a,rulelist)说明:参数a为含糊推理系统对应矩阵变量名称,rulelist以向量形式给出需要添加含糊规则。假如含糊推理系统有m个输入语言变量和n个输出语
14、言变量,则向量rulelist列数必须为m+n+2,而行数等于需要添加规则数目。在rulelist每一行中,前m个数字表示各输入语言变量语言值(隶属度函数编号),随即n个数字表示输出语言变量语言值,第n+m+1个数字是该规则权重,权重值在0到1之间,普通设定为1;第n+m+2个数字为0或1二者之一,为1表示含糊规则各输入语言变量之间是and关系,为0则表示是or关系。第25页函数showrule格式:showrule(fis)showrule(fis,indexlist)showrule(fis,indexlist,format)说明:fis为含糊推理系统矩阵变量名称;indexlist为规则
15、编号,能够以向量形式指定显示多条规则;format为显示方式,有三种显示方式,即语句方式(verbose),符号方式(symbolic)和索引方式(indexed)。例:showrule(a,1:2,indexed)输出结果:1 1,1(1):1 1 2,2(1):1第26页6、计算含糊推理输出结果函数evalfis格式:y=evalfis(U,FIS)说明:参数U是输入数据,FIS是含糊推理矩阵。U每一行是一个特定输入向量,Y每一行是一个特定输出向量。假如输入U是M*N矩阵,则系统是N输入,返回Y是M*L矩阵,L是系统输出数目。例:fis=readfis(tipper);out=evalfi
16、s(2 1;4 9,fis)输出结果:out=7.0169 19.6810第27页MATLAB含糊控制系统设计实例1一、设计目标:了解用MATLAB含糊工具箱图形界面可视化工具实现含糊控制系统方法。二、系统设计要求:1、输入变量:偏差e、偏差改变率de;输出变量:u对应隶属度函数为:第28页2、规则要求:3、反含糊化方法:平均最大隶属度函数法mom。第29页三、设计步骤:1、进入MATLAB系统,在MATLAB命令窗口执行fuzzy命令即可激活基本含糊推理系统编辑器,首先增加一个输入变量。2、在图形界面中经过鼠标双击就能激活隶属度函数编辑器和含糊规则编辑器等对应编辑窗口,在窗口中进行对应属性设
17、置即可;再在含糊推理系统编辑器中设置反含糊化方法。3、进入Ruleview观察器,观察含糊推理系统输出情况。四、设计结果要求1、统计含糊规则编辑器Ruleedit中索引indexed方式显示规则。2、统计Ruleview观察器中含糊推理系统输出情况:当e=2,de=1时u为多少?当e=1,de=2时u为多少?第30页激活含糊推理系统编辑器:第31页第32页增加一个输入变量:第33页第34页第35页双击进入Mfedit:第36页第37页修改每个变量论域和隶属度函数:第38页trimf三角形(triangular membership function)第39页第40页第41页第42页trapmf
18、(trapezium梯形)Gaussmf(高斯型)zmf(Z型)smf(S型)NB选哪种Type?第43页第44页增加隶属度函数个数:第45页第46页PB选哪种Type?trapmf(trapezium梯形)Gaussmf(高斯型)zmf(Z型)smf(S型)第47页第48页添加规则:第49页第50页语句表示规则:规则显示方式:Verbose:语句Symbolic:符号Indexed:索引第51页索引indexed方式显示规则:第一条规则1 1,5(1):1是啥意思?第52页符号symbolic方式显示规则:第53页在FIS Editor中设置反含糊化方法:第54页进入Ruleview观察器,观察含糊推理系统输出情况:1,2,9指是啥?第55页当e=2,de=1时u为多少?第56页当e=1,de=2时u为多少?第57页保留此FIS系统后:第58页双击1.fis后命令行函数:第59页第60页第61页第62页