MATLAB模糊逻辑工具箱函数

合集下载

方式二用MATLAB的模糊逻辑工具箱(Fuzzytoolbox)实现

方式二用MATLAB的模糊逻辑工具箱(Fuzzytoolbox)实现

方式二:用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现(陈教师整理)一、模糊逻辑推理系统的整体特点模糊操纵由于不依托对象的数学模型而受到普遍的重视,运算机仿真是研究模糊操纵系统的重要手腕之一。

由Math Works公司推出的Matlab软件,为操纵系统的运算机仿真提供了强有力的工具,专门是在以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊操纵系统提供了专门大的方便。

由于如此的模块都是由相关领域的闻名学者开发的,因此其可信度都是很高的,仿真结果是靠得住的。

在Simulink环境下对PID操纵系统进行建模是超级方便的,而模糊操纵系统与PID操纵系统的结构大体相同,仅仅是操纵器不同。

因此,对模糊操纵系统的建模关键是对模糊操纵器的建模。

Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入Fuzzy就可进入模糊操纵器编辑环境。

二、Matlab模糊逻辑工具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些大体信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方式等。

其中模糊推理系统能够采纳Mandani或Sugeuo两种类型,解模糊方式有最大隶属度法、重心法、加权平均等。

打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:fuzzy 命令,弹出模糊推理系统编辑器界面,如以下图所示。

因为咱们用的是两个输入,因此在Edit菜单中,选Add variable… ->input,加入新的输入input,如以下图所示。

选择input(选中为红框),在界面右边文字输入处键入相应的输入名称,例如,温度输入用tmp-input, 磁能输入用 mag-input,等。

2.隶属度函数编辑器(Mfedit)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行概念。

MATLAB模糊逻辑工具箱及函数调用方法

MATLAB模糊逻辑工具箱及函数调用方法

4 MATLAB模糊工具箱介绍Fuzzy Logic工具箱功能非常强大,利用它人们可以方便地建立模糊逻辑推理系统,并对其进行测试。

这里我们主要介绍它提供的5个图形化的系统设计工具。

4.1模糊推理系统编辑器启动模糊推理系统编辑器(FISE, Fuzzy Inference System Editer)的方法有两种,在MATLAB的命令窗口中输入“fuzzy”命令或者依次点击MATLAB软件左下角的“Start”,“Toolboxes”,“Fuzzy Logic”也可打开FISE,然后双击FIS Editor Viewer项。

FISE的图形界面如下图14示。

图1FISE图形界面4.2隶属函数编辑器在MATLAB的命令界面输入“mfedit”命令或者在模糊推理系统编辑器的“File” “Edit/Membership Functions”或者双击图14中红色矩形,都可打开隶属函数编辑器。

通过该编辑器可以设定和变更输入/输出语言变量的各自的语言值的隶属函数的类型及参数。

如下图15所示。

图2隶属函数编辑器界面4.3模糊规则编辑器在MATLAB的命令界面中输入“ruleedit”命令或者利用模糊推理系统编辑器的“File” “Edit/Rules”或双击图2里红色框旁的黑色的矩形框,都可以打开模糊规则编辑器。

通过该编辑器可以添加、修改和删除必要的模糊规则,其空白界面如下图3所示。

图3模糊规则编辑器界面4.4模糊规则观察器在MATLAB的命令界面输入“ruleview”命令,或者在前面介绍的三种编辑器中的任一个中选择相应的“View/Rules”,均可打开模糊规则观察器。

在模糊规则观察器中,以图形形式描述了模糊推理系统的推理过程,如下图4所示。

图4模糊规则浏览器界面4.5模糊推理输入输出变量特性观察器在MATLAB的命令窗口中输入“surfview”命令,或者在各个编辑器窗口选择相应菜单“View/Surface”,都可打开模糊推理输入输出曲面浏览器。

方法二用MATLAB的模糊逻辑工具箱(Fuzzytoolbox)实现.

方法二用MATLAB的模糊逻辑工具箱(Fuzzytoolbox)实现.

⽅法⼆⽤MATLAB的模糊逻辑⼯具箱(Fuzzytoolbox)实现.⽅法⼆:⽤MATLAB的模糊逻辑⼯具箱(Fuzzy toolbox)实现(陈⽼师整理)⼀、模糊逻辑推理系统的总体特征模糊控制由于不依赖对象的数学模型⽽受到⼴泛的重视,计算机仿真是研究模糊控制系统的重要⼿段之⼀。

由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有⼒的⼯具,特别是在Matlab4.2以后的版本中推出的模糊⼯具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很⼤的⽅便。

由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很⾼的,仿真结果是可靠的。

在Simulink环境下对PID控制系统进⾏建模是⾮常⽅便的,⽽模糊控制系统与PID控制系统的结构基本相同,仅仅是控制器不同。

所以,对模糊控制系统的建模关键是对模糊控制器的建模。

Matlab软件提供了⼀个模糊推理系统(FIS)编辑器,只要在Matlab命令窗⼝键⼊Fuzzy就可进⼊模糊控制器编辑环境。

⼆、Matlab模糊逻辑⼯具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器⽤于设计和显⽰模糊推理系统的⼀些基本信息,如推理系统的名称,输⼊、输出变量的个数与名称,模糊推理系统的类型、解模糊⽅法等。

其中模糊推理系统可以采⽤Mandani或Sugeuo两种类型,解模糊⽅法有最⼤⾪属度法、重⼼法、加权平均等。

打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键⼊:fuzzy 命令,弹出模糊推理系统编辑器界⾯,如下图所⽰。

因为我们⽤的是两个输⼊,所以在Edit菜单中,选Add variable… ->input,加⼊新的输⼊input,如下图所⽰。

选择input(选中为红框),在界⾯右边⽂字输⼊处键⼊相应的输⼊名称,例如,温度输⼊⽤tmp-input, 磁能输⼊⽤ mag-input,等。

MATLAB模糊逻辑工具箱函数

MATLAB模糊逻辑工具箱函数
6
二、利用模糊逻辑工具箱建立模糊推理系统
基于高木——关野(Takagi——Sugeno)模 型的模糊逻辑系统 高木 —— 关野模糊逻辑系统是一类较为特 殊的模糊逻辑系统,其模糊规则不同于一般的 模糊规则形式。 在高木 —— 关野模糊逻辑系统中,采用如 下形式的模糊规则: IF x1 is A1 and x2 is A2 and…and xn is An THEN y c x 其 中 Ai(i=1,2,…,n) 是 输 入 模 糊 语 言 值 , ci(i=1,2,…,n)是真值参数。

2
一、 MATLAB模糊逻辑工具箱简介
针对模糊逻辑尤其是模糊控制的迅速推广应 用,MathWorks公司在其MATLAB版中添加 了Fuzzy Logic工具箱。该工具箱由长期从事 模糊逻辑和模糊控制研究与开发工作的有关 专家和技术人员编制。MATLAB Fuzzy Logic工具箱以其功能强大和方便易用的特点 得到了用户的广泛欢迎。模糊逻辑的创始人 Zadeh教授称赞该工具箱“在各方面都给人 以深刻的印象,使模糊逻辑成为智能系统的 概念与设计的有效工具。”
3
一、 MATLAB模糊逻辑工具箱简介
在模糊逻辑工具箱中包含五个图形化的系 统设计工具,这五个设计工具是: • 模糊推理系统编辑器,该编辑器用于建 立模糊逻辑系统的整体框架,包括输入与输 出数目、去模糊化方法等; • 隶属度函数编辑器,用于通过可视化手 段建立语言变量的隶属度函数; • 模糊推理规则编辑器; • 系统输入输出特性曲面测览器; • 模糊推理过程浏览器。
建立一般的钟型隶属度函数 建立型隶属度函数 建立sigmiod型的隶属度函数
trapmf( )
trimf( ) zmf( ) mf2mf( )

方法二用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现.

方法二用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现.

方法二:用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现(陈老师整理)一、模糊逻辑推理系统的总体特征模糊控制由于不依赖对象的数学模型而受到广泛的重视,计算机仿真是研究模糊控制系统的重要手段之一。

由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有力的工具,特别是在Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很大的方便。

由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很高的,仿真结果是可靠的。

在Simulink环境下对PID控制系统进行建模是非常方便的,而模糊控制系统与PID控制系统的结构基本相同,仅仅是控制器不同。

所以,对模糊控制系统的建模关键是对模糊控制器的建模。

Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入Fuzzy就可进入模糊控制器编辑环境。

二、Matlab模糊逻辑工具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。

其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。

打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:fuzzy 命令,弹出模糊推理系统编辑器界面,如下图所示。

因为我们用的是两个输入,所以在Edit菜单中,选Add variable… ->input,加入新的输入input,如下图所示。

选择input(选中为红框),在界面右边文字输入处键入相应的输入名称,例如,温度输入用tmp-input, 磁能输入用 mag-input,等。

2.隶属度函数编辑器(Mfedit)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。

matlab 模糊工具箱操作

matlab 模糊工具箱操作

num=20;den=[8 6 1];[a1,b1,c1,d]=tf2ss(num,den); T=0.01;h=T;N=500;R=1.5*ones(1,N);%pide=0;de=0;ie=0;kp=4;ki=0.5;kd=1.5;x=[0;0];for k=1:Nu1=-(kp*e+ki*ie+kd*de);k0=a1*x+b1*u1;k1=a1*(x+h*k0/2)+b1*u1;k2=a1*(x+h*k1/2)+b1*u1;k3=a1*(x+h*k2)+b1*u1;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u1;e1=e;e=y-R(1,k);de=(e-e1)/T;ie=e*T+ie;yy2(1,k)=y;enda=newfis('simple1');a=addvar(a,'input','e',[-5 5]);a=addmf(a,'input',1,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'input',1,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'input',1,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'input',1,'ZE','trimf',[-1,0,1]);a=addmf(a,'input',1,'PS','trapmf',[0,1,2,3]);a=addmf(a,'input',1,'PM','trapmf',[2,3,4,5]);a=addmf(a,'input',1,'PB','trapmf',[4,5,5,5]);a=addvar(a,'input','de',[-5 5]);a=addmf(a,'input',2,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'input',2,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'input',2,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'input',2,'ZE','trimf',[-1,0,1]);a=addmf(a,'input',2,'PS','trapmf',[0,1,2,3]);a=addmf(a,'input',2,'PM','trapmf',[2,3,4,5]);a=addmf(a,'input',2,'PB','trapmf',[4,5,5,5]);a=addvar(a,'output','kp',[-5 5]);a=addmf(a,'output',1,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'output',1,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'output',1,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'output',1,'ZE','trimf',[-1,0,1]);a=addmf(a,'output',1,'PS','trapmf',[0,1,2,3]);a=addmf(a,'output',1,'PM','trapmf',[2,3,4,5]);a=addmf(a,'output',1,'PB','trapmf',[4,5,5,5]);rulelist1=[1 1 7 1 1;1 2 7 1 1;1 3 6 1 1;1 4 6 1 1;1 5 5 1 1;1 6 4 1 1;1 7 4 1 1;2 1 7 1 1;2 2 7 1 1;23 6 1 1;245 1 1;2 5 5 1 1;26 4 1 1;2 73 1 1;3 1 6 1 1;3 2 6 1 1;3 3 6 1 1;345 1 1;3 5 4 1 1;36 3 1 1;3 7 3 1 1;4 1 6 1 1;4 2 6 1 1;4 35 1 1;4 4 4 1 1;4 5 3 1 1;46 2 1 1;4 7 2 1 1;5 1 5 1 1;5 2 5 1 1;5 3 4 1 1;5 4 3 1 1;5 5 3 1 1;56 2 1 1;5 7 2 1 1;6 1 5 1 1;6 2 4 1 1;6 3 3 1 1;6 4 2 1 1;6 5 2 1 1;6 6 2 1 1;6 7 1 1 1;7 1 4 1 1;7 2 4 1 1;7 3 2 1 1;7 4 2 1 1;7 5 2 1 1;7 6 1 1 1;7 7 1 1 1]; a=addrule(a,rulelist1);b=newfis('simple2');b=addvar(b,'input','e',[-5 5]);b=addmf(b,'input',1,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'input',1,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'input',1,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'input',1,'ZE','trimf',[-1,0,1]);b=addmf(b,'input',1,'PS','trapmf',[0,1,2,3]);b=addmf(b,'input',1,'PM','trapmf',[2,3,4,5]);b=addmf(b,'input',1,'PB','trapmf',[4,5,5,5]);b=addvar(b,'input','de',[-5 5]);b=addmf(b,'input',2,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'input',2,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'input',2,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'input',2,'ZE','trimf',[-1,0,1]);b=addmf(b,'input',2,'PS','trapmf',[0,1,2,3]);b=addmf(b,'input',2,'PM','trapmf',[2,3,4,5]);b=addmf(b,'input',2,'PB','trapmf',[4,5,5,5]);b=addvar(b,'output','ki',[-5 5]);b=addmf(b,'output',1,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'output',1,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'output',1,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'output',1,'ZE','trimf',[-1,0,1]);b=addmf(b,'output',1,'PS','trapmf',[0,1,2,3]);b=addmf(b,'output',1,'PM','trapmf',[2,3,4,5]);b=addmf(b,'output',1,'PB','trapmf',[4,5,5,5]);rulelist2=[1 1 1 1 1;1 2 1 1 1;1 3 2 1 1;1 4 2 1 1;1 5 3 1 1;1 6 4 1 1;1 7 4 1 1;2 1 1 1 1;2 2 1 1 1;23 2 1 1;24 3 1 1;25 3 1 1;26 4 1 1;2 7 4 1 1;3 1 1 1 1;3 2 2 1 1;3 3 3 1 1;34 3 1 1;35 4 1 1;36 5 1 1;3 7 5 1 1;4 1 2 1 1;4 2 2 1 1;4 3 3 1 1;4 4 4 1 1;45 5 1 1;46 6 1 1;4 7 6 1 1;5 1 2 1 1;5 2 3 1 1;5 3 4 1 1;5 4 5 1 1;5 5 5 1 1;56 6 1 1;5 7 7 1 1;6 1 4 1 1;6 2 4 1 1;6 3 5 1 1;6 4 5 1 1;6 5 6 1 1;6 67 1 1;6 7 7 1 1;7 1 4 1 1;7 2 4 1 1;7 3 5 1 1;7 4 6 1 1;7 5 6 1 1;7 6 7 1 1;7 7 7 1 1]; b=addrule(b,rulelist2);c=newfis('simple3');c=addvar(c,'input','e',[-5 5]);c=addmf(c,'input',1,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'input',1,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'input',1,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'input',1,'ZE','trimf',[-1,0,1]);c=addmf(c,'input',1,'PS','trapmf',[0,1,2,3]);c=addmf(c,'input',1,'PM','trapmf',[2,3,4,5]);c=addmf(c,'input',1,'PB','trapmf',[4,5,5,5]);c=addvar(c,'input','de',[-5 5]);c=addmf(c,'input',2,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'input',2,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'input',2,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'input',2,'ZE','trimf',[-1,0,1]);c=addmf(c,'input',2,'PS','trapmf',[0,1,2,3]);c=addmf(c,'input',2,'PM','trapmf',[2,3,4,5]);c=addmf(c,'input',2,'PB','trapmf',[4,5,5,5]);c=addvar(c,'output','kd',[-5 5]);c=addmf(c,'output',1,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'output',1,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'output',1,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'output',1,'ZE','trimf',[-1,0,1]);c=addmf(c,'output',1,'PS','trapmf',[0,1,2,3]);c=addmf(c,'output',1,'PM','trapmf',[2,3,4,5]);c=addmf(c,'output',1,'PB','trapmf',[4,5,5,5]);rulelist3=[1 1 1 1 1;1 2 1 1 1;1 3 1 1 1;1 4 1 1 1;1 5 1 1 1;1 6 1 1 1;1 7 1 1 1;2 1 2 1 1;2 2 2 1 1;23 2 1 1;24 2 1 1;25 2 1 1;26 2 1 1;2 7 2 1 1;3 1 3 1 1;3 2 3 1 1;3 3 3 1 1;34 3 1 1;35 3 1 1;36 3 1 1;3 7 3 1 1;4 1 4 1 1;4 2 3 1 1;4 3 3 1 1;4 4 3 1 1;45 3 1 1;46 3 1 1;4 7 4 1 1;5 1 4 1 1;5 2 4 1 1;5 3 4 1 1;5 4 4 1 1;5 5 4 1 1;56 4 1 1;5 7 4 1 1;6 1 5 1 1;6 2 5 1 1;6 3 5 1 1;6 4 5 1 1;6 5 5 1 1;6 6 5 1 1;6 7 4 1 1;7 1 6 1 1;7 2 6 1 1;7 3 6 1 1;7 4 6 1 1;7 5 6 1 1;7 6 6 1 1;7 7 6 1 1]; c=addrule(c,rulelist3);figure(2);gensurf(c)e=0;de=0;ie=0;x=[0;0];ke=30;kd=20;kup=5;kui=0.3;kud=0.7;for k=1:Ne1=ke*e;de1=kd*de;if e1>=5e1=5;elseif e1<=-5e1=-5;endif de1>=5de1=5;elseif de1<=-5de1=-5;endin=[e1 de1];u1=evalfis(in,a);u2=evalfis(in,b);u3=evalfis(in,c);kp=u1/10+kup;ki=u2/10+kui;kd=u3/10+kud;u=-(kp*e+ki*ie+kd*de);k0=a1*x+b1*u;k1=a1*(x+h*k0/2)+b1*u;k2=a1*(x+h*k1/2)+b1*u;k3=a1*(x+h*k2)+b1*u;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u;yy(1,k)=y;e1=e;e=y-R(1,k);de=(e-e1)/T;ie=ie+T*e;endkk=[1:N]*T;figure(1);plot(kk,R,'k',kk,yy(1,:),'r',kk,yy2(1,:),'g'); gtext('FSA-PID');gtext('PID');num=20;den=[1.6,4.4,1];[a1,b,c,d]=tf2ss(num,den);x=[0;0];T=0.01;h=T;N=1000;%PID CONTROLe=0;de=0;ie=0;kp=5;ki=1.3;kd=0.1;for k=1:Nuu(1,k)=-(kp*e+ki*de+kd*ie); u=uu(1,k);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;t(1,k)=k*T;if k<=300R(1,k)=t(1,k)/3;elseif k<=700R(1,k)=1.0;elseif k<=1000R(1,k)=(10-t(1,k))/3;ende1=e;e=y-R(1,k);de=(e-e1)/T;ie=e*T+ie;yy1(1,k)=y;enda=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]);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]; r1=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;endend[r,s]=size(r1);r2=ones(r,2);rulelist=[r1,r2];a=addrule(a,rulelist);e=0;de=0;ke=40;kd=1.5;ku=1;for k=1:Ne1=ke*e;de1=kd*de;if e1>=6e1=6;elseif e1<=-6e1=-6;endif de1>=6de1=6;elseif de1<=-6de1=-6;endin=[e1 de1];uu(1,k)=ku*evalfis(in,a); u=uu(1,k);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;t(1,k)=k*T;if k<=300R(1,k)=t(1,k)/3;elseif k<=700R(1,k)=1.0;elseif k<=1000R(1,k)=(10-t(1,k))/3;ende1=e;e=y-R(1,k);de=(e-e1)/T;yy(1,k)=y;endkk=[1:N]*T;figure(1);plot(kk,R,'k',kk,yy,'k',kk,yy1,'r'); gtext('FUZZY');gtext('n');gtext('PID');。

模糊控制介绍及Matlab模糊控制工具箱使用

模糊控制介绍及Matlab模糊控制工具箱使用

模糊控制介绍及Matlab模糊控制工具箱使用目录•一、模糊控制的产生•二、模糊逻辑的理论基础•三、模糊控制Matlab工具箱示例•四、模糊控制的基本思想•五、模糊控制器的基本结构•六、模糊控制器的优缺点一、模糊控制的产生在传统控制领域,对于明确系统有强而有力的控制能力,即被控系统的动态信息越详细,越能达到精确控制的目的。

然而,在多变量、非线性的复杂系统中,往往难以完全描述系统的动态信息。

此时,传统的控制理论则显得无能为力,而有经验的专家或工作人员仍能根据长期实践观察和操作经验进行有效控制。

据此引申,是否可将人的操作经验总结为若干条控制规则以避开复杂模型的建立过程?模糊控制最重要的特征是反应人们的经验及推理规则,而这些经验和推理规则是通过自然语言来表达的,如“水温上升过快,则关小燃气阀”。

在控制系统初期,由于对系统缺乏了解,控制效果可能不好,但若干次探索后终能实现预期的控制,这就是经验对模糊控制系统的重要性。

由于模糊控制实质上是用计算机去执行人的控制策略,因而可以避开复杂模型的建立,对人们关于某个控制问题的成功和失败经验加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。

PS:“模糊”是人类感知万物,获取知识,思维推理,决策实施的重要特征。

“模糊”比“清晰”所拥有的信息量更大,更符合客观世界。

二、模糊逻辑的理论基础模糊逻辑是指模仿人脑不确定性的概念判断和推理思维,对于定性的知识和经验,借助隶属度概念、模糊集合,来处理模糊关系。

模糊逻辑实质上是要对模糊性对象进行精确描述和处理。

模糊逻辑的目的是将一个输入空间映射到一个输出空间,主要要靠一系列的if-then规则。

这些规则包含变量和描述这些变量的形容词,被平行评估,因此它们的顺序不重要。

在进行模糊推理之前,先要定义好输入和输出变量以及描述它们的形容词。

模糊推理的流程如下图所示。

模糊推理流程2.1、模糊集合普通情况下,元素a属于集合A(1)或不属于集合A(0),如下图所示,星期一和星期三都是工作日,而苹果和星星则不是。

matlab模糊逻辑工具箱函数

matlab模糊逻辑工具箱函数

MATLAB模糊逻辑工具箱函数说明:本文档中所列出的函数适用于MATLAB5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档。

1.GUI工具Anfisedit 打开ANFIS编辑器GUIFuzzy 调用基本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 创建新的FISparsrule 解析模糊规则plotfis 绘制一个FISplotmf 绘制给定语言变量的所有隶属度函数的曲线readfis 从磁盘装入一个FISrmmf 从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.演示defuzzdm 反模糊化方法fcmdemo FCM聚类显示(二维)fuzdemos 列出所有模糊逻辑工具箱的演示程序gasdemo 使用子聚类节省燃料的ANFIS演示juggler 带规则观察器的弹球游戏器invkine 单机械臂倒立摆运动irisfcm FCM聚类显示(四维)noisedm 自适应消除噪声slbb 球和棒控制(Simulink)slcp 倒立摆控制(Simulink)sltank 水位控制(Simulink)sltankrule 带规则观察器的水位控制(Simulink)sltbu 卡车入库(只有Simulink方式)。

Matlab中的模糊逻辑控制方法

Matlab中的模糊逻辑控制方法

Matlab中的模糊逻辑控制方法引言模糊逻辑控制(FLC)是一种常用的控制方法,在很多实际应用中得到了广泛的应用。

Matlab作为一种功能强大的数学计算和工程仿真软件,提供了丰富的工具和函数来支持模糊逻辑控制的设计和实现。

本文将介绍Matlab中的模糊逻辑控制方法及其应用。

一、模糊逻辑控制的基本概念模糊逻辑控制是一种基于模糊逻辑原理的控制方法,它可以处理不确定性信息和模糊概念,适用于那些难以建立精确数学模型的控制系统。

模糊逻辑控制系统由四个基本部分组成:模糊化、推理、解模糊和规则库。

1.1 模糊化模糊化是将输入量从实际值转化为模糊集合的过程。

在Matlab中,可以使用fuzzifier函数将实际输入映射到模糊集合上。

模糊集合可以通过一些参数来描述,如三角形型、梯形型、高斯型等。

1.2 推理推理是根据模糊集合的规则进行推导,得到系统的输出。

在Matlab中,可以使用inference函数进行推理。

推理的方法有三种:基于规则的推理、基于模糊集合的推理和基于模型的推理。

根据应用的需求和系统的复杂程度,可以选择不同的推理方法。

1.3 解模糊解模糊是将模糊输出转化为实际值的过程。

在Matlab中,可以使用defuzzifier 函数进行解模糊。

常用的解模糊方法有:最大值法、平均值法、面积法等。

1.4 规则库规则库是模糊逻辑控制系统的核心,它包含了一系列的模糊规则,用来描述输入和输出之间的关系。

在Matlab中,可以使用fuzzy规则对象来定义规则库。

规则库的设计是模糊逻辑控制系统设计中的关键一步,直接影响系统的性能和稳定性。

二、Matlab中的模糊逻辑控制工具箱Matlab提供了专门的工具箱,用于支持模糊逻辑控制系统的设计和实现。

这个工具箱包含了一些常用的函数和工具,能够帮助用户更加方便快捷地进行模糊逻辑控制系统的设计和仿真。

2.1 模糊逻辑控制系统设计工具Matlab的模糊逻辑控制系统设计工具提供了一种用户友好的可视化界面,用于设计和编辑模糊逻辑控制系统。

MATLAB模糊逻辑工具箱函数

MATLAB模糊逻辑工具箱函数

基本FIS编辑器函数fuzzy格式 fuzzy %弹出未定义的基本FIS编辑器fuzzy(fismat) %使用fuzzy('tipper'),弹出下图FIS编辑器。

编辑器是任意模糊推理系统的高层显示,它允许你调用各种其它的编辑器来对其操作。

此界面允许你方便地访问所有其它的编辑器,并以最灵活的方式与模糊系统进行交互。

方框图:窗口上方的方框图显示了输入、输出和它们中间的模糊规则处理器。

单击任意一个变量框,使选中的方框成为当前变量,此时它变成红色高亮方框。

双击任意一个变量,弹出隶属度函数编辑器,双击模糊规则编辑器,弹出规则编辑器。

菜单项:FIS编辑器的菜单棒允许你打开相应的工具,打开并保存系统。

·File菜单包括:New mamdani FIS … 打开新mamdani型系统;New Sugeno FIS …打开新Sugeno型系统;Open from disk …从磁盘上打开指定的.fis文件系统;Save to disk 保存当前系统到磁盘上的一个.fis文件上;Save to disk as … 重命名方式保存当前系统到磁盘上;Open from workspace … 从工作空间中指定的FIS结构变量装入一个系统;Save to workspace …保存系统到工作空间中当前命名的FIS结构变量中;Save to workspace as …保存系统到工作空间中指定的FIS结构变量中;Close windows 关闭GUI;·Edit菜单包括:Add input 增加另一个输入到当前系统中;Add output 增加另一个输出到当前系统中;Remove variable 删除一个所选的变量;Undo 恢复当前最近的改变;Edit MFs …调用隶属度函数编辑器;Edit rules …调用规则编辑器;Edit anfis …只对单输出Sugeno型系统调用编辑器;View rules …调用规则观察器;View surface … 调用曲面观察器。

使用Matlab进行模糊逻辑分析的技巧

使用Matlab进行模糊逻辑分析的技巧

使用Matlab进行模糊逻辑分析的技巧引言:在现代科学中,逻辑分析在决策、控制系统和模糊推理等领域发挥着重要的作用。

模糊逻辑是一种能够处理复杂和不确定的问题的有效工具。

而Matlab作为一种功能强大的数学软件,也提供了丰富的工具和函数来支持模糊逻辑的建模和分析。

本文将介绍使用Matlab进行模糊逻辑分析的一些技巧和实例。

一、安装模糊逻辑工具箱Matlab提供了自带的模糊逻辑工具箱,可以通过Matlab的插件管理器进行安装。

打开Matlab后,在工具栏中选择"Add-Ons",然后在搜索框中输入"模糊逻辑工具箱",点击搜索按钮,选择合适的版本进行安装。

安装完成后,即可在工具箱中找到并使用模糊逻辑相关的函数和工具。

二、建立模糊逻辑系统使用Matlab进行模糊逻辑分析的第一步是建立一个模糊逻辑系统。

可以使用命令"fuzzy"创建一个模糊逻辑系统对象,然后使用该对象进行后续的分析。

例如,创建一个简单的三角形隶属函数的模糊逻辑系统对象:```matlabfis = fuzzyfis = addInput(fis,[0 10],'Name','input1')fis = addOutput(fis,[0 20],'Name','output1')fis = addMF(fis,'input1','trimf',[2 5 7])fis = addMF(fis,'output1','trimf',[4 10 16])```上述代码创建了一个输入变量input1和一个输出变量output1,并添加了三角形隶属函数。

通过这种方式,可以根据实际问题的需求建立模糊逻辑系统。

三、设置模糊规则在模糊逻辑系统中,模糊规则是描述输入和输出之间关系的关键。

如何使用Matlab进行模糊推理

如何使用Matlab进行模糊推理

如何使用Matlab进行模糊推理引言在现实生活中,我们往往需要处理不确定性和模糊性的问题。

而模糊推理作为一种处理模糊信息的方法,在人工智能和信息处理领域得到了广泛应用。

Matlab作为一个强大的数学建模和仿真工具,也提供了丰富的功能来进行模糊推理。

本文将介绍如何使用Matlab进行模糊推理的基本方法和技巧。

一、Matlab中的模糊逻辑工具箱Matlab提供了专门的工具箱来支持模糊逻辑的建模和推理。

用户可以使用这些工具箱中的函数和工具来构建模糊系统、进行模糊推理和进行系统性能评估。

在使用之前,需要先安装模糊逻辑工具箱,并通过调用相关函数将其加载到Matlab环境中。

二、模糊逻辑建模1. 变量和隶属函数的定义在进行模糊逻辑建模时,首先需要定义模糊变量和相应的隶属函数。

模糊变量表示模糊信息的输入或输出,而隶属函数则用来描述变量的模糊隶属度。

在Matlab中,可以通过调用相关函数来创建和定义模糊变量和隶属函数。

例如,使用fis工具箱中的newfis函数可以创建一个新的模糊系统对象,使用addvar 函数可以向模糊系统中添加新的模糊变量,使用addmf函数可以向模糊变量中添加新的隶属函数。

2. 模糊规则的定义模糊规则用来描述输入变量与输出变量之间的关系,其中包含了变量之间的模糊推理过程。

在Matlab中,可以使用addrule函数来定义和添加模糊规则。

该函数可以接受不同形式的输入,例如模糊规则的标准形式、模糊规则的表格形式等。

三、模糊推理1. 模糊推理的基本原理在进行模糊推理时,需要根据已有的输入变量和模糊规则来计算输出变量的模糊值。

在Matlab中,可以使用evalfis函数来进行模糊推理。

该函数接受输入变量、模糊规则和一些其他参数作为输入,返回输出变量的模糊值。

2. 基于模糊逻辑的决策制定通过模糊推理,我们可以根据已知的输入变量和模糊规则来计算输出变量的模糊值。

然而,模糊值通常需要转化为实际的决策结果。

模糊控制的Matlab仿真实例分析

模糊控制的Matlab仿真实例分析

.
18
在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。
.
19
.
20
.
21
这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。
字分别代表服务和食
物的质量( 10 表示
非常好, 0 表示非常
差),这时小费与它
.
们之间的关系又应4当8
如何反映呢?
假设是二元线性关系 用下列 MATLAB 语句可绘出下图 。
.
49
.
50
可以看到,如果不考虑服务质量因素比食物质量因素对 于小费的支付占有更大的比重,上面的关系图形已经能 够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 %。这里可以设定权重因子:
注意将鼠标箭头放置图内,移动鼠标可得到不同 角度的视图,如下图所示。
.
15
Matlab模糊控制仿真演示例子
模型sltank.mdl ——使用模糊控制器对水箱水位进 行控制。
假定水箱有一个进水口和一个出水口,可以通过控 制一个阀门来控制流入的水量(即水位高度),但 是流出的速度取决于出水口的半径(定值)和水箱 底部的压力(随水箱中的水位高度变化)。系统有 许多非线性特性。
真。
.
31
学习 MATLAB 仿真工具的一个快速有效的方法就 是学习示例模型,通过看懂这些模型和模块的功
能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。

利用Matlab进行模糊逻辑与控制的技巧与方法

利用Matlab进行模糊逻辑与控制的技巧与方法

利用Matlab进行模糊逻辑与控制的技巧与方法随着科技的不断进步和发展,模糊逻辑与控制作为一种新兴的控制方法受到了越来越多的关注和应用。

它可以模拟人类的思维方式,将模糊的输入转化为准确的输出结果,用于解决现实生活中的各种问题。

而Matlab作为一种强大的科学计算软件,不仅能够提供快速的数值计算能力,还为模糊逻辑与控制的分析和建模提供了便捷和高效的工具。

一、Matlab中的模糊逻辑工具箱Matlab提供了专门的模糊逻辑工具箱(Fuzzy Logic Toolbox),该工具箱集成了一系列的函数和工具,方便用户进行模糊逻辑的建模和仿真。

用户可以使用这些函数和工具来创建模糊输入、模糊输出和模糊规则,以及进行模糊推理和模糊控制系统的设计。

二、模糊逻辑建模的步骤在使用Matlab进行模糊逻辑建模时,一般需要按照以下步骤进行:1. 确定模糊变量和它们的隶属函数:模糊变量是用来描述问题中的模糊概念的变量,它可以是输入变量或输出变量。

隶属函数用来描述模糊变量的隶属关系,可以是高斯型、三角型、梯形型等不同形状的函数。

2. 确定模糊规则库:模糊规则库是一组模糊规则的集合,它描述了输入变量和输出变量之间的关系。

每个模糊规则由若干个前提条件和一个结论组成,前提条件是对输入变量的模糊化描述,结论是对输出变量的模糊化描述。

3. 进行模糊推理:模糊推理是根据输入变量和模糊规则,通过模糊推理引擎将模糊输入转化为模糊输出的过程。

Matlab提供了多种推理方法,如模糊最大化、模糊最小化等。

4. 进行模糊解模糊:模糊解模糊是将模糊输出转化为具体的输出值的过程。

常用的解模糊方法有模糊平均法、模糊加权法等。

5. 进行模糊控制系统的仿真和优化:使用Matlab提供的仿真和优化工具,对设计的模糊控制系统进行测试、分析和优化。

三、实例演示下面以一个简单的温度控制系统为例,演示如何利用Matlab进行模糊逻辑与控制的建模和仿真。

假设我们需要设计一个温度控制器,使室内温度始终保持在一个设定的温度范围内。

Matlab中的模糊逻辑控制技巧

Matlab中的模糊逻辑控制技巧

Matlab中的模糊逻辑控制技巧一、引言模糊逻辑控制是一种基于模糊集合理论的控制方法,它能够处理不确定性和模糊性的问题,在诸多领域得到了广泛的应用。

而Matlab作为一种功能强大的数值计算软件,提供了丰富的工具和函数,可以方便地进行模糊逻辑控制设计与仿真。

本文将介绍在Matlab环境下,如何运用模糊逻辑控制技巧进行系统建模、规则设计、模糊推理和模糊控制等方面的实践经验。

二、模糊逻辑控制系统建模在Matlab中,可以使用fuzzy工具箱来构建模糊逻辑控制系统。

首先,需要进行建模,即确定输入、输出和模糊集合的范围。

可以通过设定输入、输出的模糊隶属函数和模糊集合之间的关系来描述系统。

例如,在一个简单的温度控制系统中,可以设置温度作为输入,风扇转速作为输出,然后定义几个模糊集合,如"cold"、"warm"和"hot",并指定它们之间的隶属函数,比如使用高斯函数。

三、模糊逻辑规则设计在模糊逻辑控制系统中,需要设计一系列的模糊规则来实现输入与输出之间的映射关系。

在Matlab中,可以使用fuzzy工具箱的ruleeditor函数来进行规则的编辑和设计。

在打开规则编辑器后,可以通过添加规则和设定规则的前提和结论来完成规则的设计。

规则的前提是输入变量的值,可以采用模糊集合的形式进行表示;规则的结论是输出变量的值,也是通过模糊集合来表示。

四、模糊推理模糊推理是模糊逻辑控制系统的核心部分,它通过模糊规则的匹配和融合,来确定输出的模糊集合。

在Matlab中,可以使用fuzzy工具箱中的evalfis函数来进行模糊推理。

evalfis函数需要传入输入变量的值和设计好的模糊推理系统,然后返回输出变量的模糊集合。

基于模糊推理的结果,可以使用defuzz函数来进行模糊输出的解模糊处理,得到具体的输出值。

五、模糊控制系统仿真在模糊逻辑控制系统建模、规则设计和模糊推理之后,可以通过仿真来验证系统的性能和效果。

matlab中mamfis用法

matlab中mamfis用法

matlab中mamfis用法MATLAB中的MAMFIS是一种基于模糊逻辑的工具箱,它可以用于建立模糊推理系统。

MAMFIS的使用可以帮助用户处理模糊信息,使得在处理模糊问题时更加高效和准确。

下面将介绍MAMFIS的用法。

1. 创建MAMFIS系统在MATLAB中,可以使用命令fis = mamfis()来创建一个空的MAMFIS系统。

在创建MAMFIS系统时,需要指定输入和输出变量的名称和范围。

例如,可以使用以下命令来创建一个具有两个输入变量和一个输出变量的MAMFIS系统:fis = mamfis('Name','MyMAMFIS');fis = addInput(fis,[0 10],'Name','Input1');fis = addInput(fis,[0 10],'Name','Input2');fis = addOutput(fis,[0 10],'Name','Output1');2. 添加模糊规则在创建MAMFIS系统后,需要添加模糊规则。

可以使用命令fis = addRule(fis,rule)来添加规则。

其中,rule是一个结构体,包含了模糊规则的信息。

例如,可以使用以下命令来添加一个模糊规则:rule = struct('input', [1 2], 'output', 1, 'connection', 1, 'weight', 1); fis = addRule(fis, rule);3. 设置模糊变量和模糊集在MAMFIS系统中,需要设置模糊变量和模糊集。

可以使用命令fis = addMF(fis, var, mf)来添加模糊集。

其中,var是模糊变量的名称,mf是模糊集的信息。

matlab模糊逻辑(一)

matlab模糊逻辑(一)

matlab模糊逻辑(⼀)第6章模糊逻辑6.1 ⾪属函数6.1.1 ⾼斯⾪属函数函数 gaussmf格式 y=gaussmf(x,[sig c])说明⾼斯⾪属函数的数学表达式为:,其中为参数,x为⾃变量,sig为数学表达式中的参数。

例6-1>>x=0:0.1:10;>>y=gaussmf(x,[2 5]);>>plot(x,y)>>xlabel('gaussmf, P=[2 5]')结果为图6-1。

图6-16.1.2 两边型⾼斯⾪属函数函数 gauss2mf格式 y = gauss2mf(x,[sig1 c1 sig2 c2])说明 sig1、c1、sig2、c2为命令1中数学表达式中的两对参数例6-2>>x = (0:0.1:10)';>>y1 = gauss2mf(x, [2 4 1 8]);>>y2 = gauss2mf(x, [2 5 1 7]);>>y3 = gauss2mf(x, [2 6 1 6]);>>y4 = gauss2mf(x, [2 7 1 5]);>>y5 = gauss2mf(x, [2 8 1 4]);>>plot(x, [y1 y2 y3 y4 y5]);>>set(gcf, 'name', 'gauss2mf', 'numbertitle', 'off');结果为图6-26.1.3 建⽴⼀般钟型⾪属函数函数 gbellmf格式 y = gbellmf(x,params)说明⼀般钟型⾪属函数依靠函数表达式这⾥x指定变量定义域范围,参数b通常为正,参数c位于曲线中⼼,第⼆个参数变量params是⼀个各项分别为a,b和c的向量。

例6-3>>x=0:0.1:10;>>y=gbellmf(x,[2 4 6]);>>plot(x,y)>>xlabel('gbellmf, P=[2 4 6]')结果为图6-3。

模糊控制系统工具箱函数

模糊控制系统工具箱函数

实验一:模糊控制系统工具箱函数一、实验目的1.通过实验熟悉并掌握各类模糊控制系统工具箱函数的用法2.通过实验熟悉并掌握典型隶属度函数的Matlab仿真3.通过实验熟悉并掌握Matlab软件的利用方式二、实验内容1.按照给定参数编制模糊推理系统数据结构管理功能函数及整个“tipper”模糊推理系统的Matlab仿真程序。

2. 运行所编制的程序,取得各功能函数的仿真结果,完成FIS的求解。

3. 按照给定参数编制取得各类典型隶属度函数的Matlab仿真程序。

4. 运行所编制的程序,取得隶属度函数仿真曲线,并研究参数转变对曲线特性的影响,完成典型隶属度函数的仿真研究。

三、实验步骤1. 针对“tipper”模糊推理系统,编制相应的数据结构管理功能函数的Matlab仿真程序。

2. 运行所编制的程序,取得各功能函数的仿真结果。

3.按照给定参数编制整个“tipper”模糊推理系统的仿真程序,并求解在给定作用下FIS 的输出。

4. 熟悉Matlab软件,编制取得各类典型隶属度函数的Matlab仿真程序。

5. 运行所编制的程序,取得典型隶属度函数的仿真曲线。

6.改变隶属度函数的参数,观测参数的转变对仿真曲线的影响。

7.分析实验结果,完成实验报告。

四、实验参数要求1.在tipper模糊系统中,'input'1即'service'的范围为[0 10],且分为'poor','good','excellent'三个模糊集,3个模糊集均采用'gaussmf'型隶属函数,区间别离为[ 0],[ 5],[ 10];input(2)即'food '的范围为[0 10],且分为'rancid ','delicious '2个模糊集,2个模糊集均采用'trapmf'型隶属函数,区间别离为[-2 0 1 3],[7 9 10 12];output(1)即'tip''的范围为[0 30],且分为' cheap ',' average ',' generous '三个模糊集,3个模糊集均采用' trimf '型隶属函数,区间别离为[0 5 10],[10 15 20],[20 25 30]④求解输入别离为[1 2]和[3 5;2 7]时系统的输出2.Gaussian型隶属度函数σ=2,c=53. gbellmf隶属度函数 a=2, b=4,c=64. Sigmoidal隶属度函数 a1=2, c1=4; a2=2, c2=4;5. trapezoid隶属度函数a=1, b=5, c=7, d=86. triangle隶属度函数 a=3, b=6, c=87. Z形隶属度函数 a=3, b=78.按照给定参数,设计自概念隶属函数的Matlab仿真程序①以年龄为论域,取x=[0,150],设计模糊集“年轻”的隶属函数的Matlab仿真程序②设计一个三角形隶属函数,按[-6,6]范围分为七个品级,成立一个模糊系统,用来表示{负大,负中,负小,零,正小,正中,正大}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

plotfis( )
图形显示模糊推理系统的输入—输出特性
15
1 .创建新的模糊推理系统函数newfis( ) 该函数用于创建一个新的模糊推理系统,模糊推理 系统的特性可由函数的参数指定,其参数个数可达7个 。调用格式为 fisMat=newfis(‘fisName’,fisType,andMethod,orMethod, impMethod,aggMethod,defuzzMethod)
17
2. 从磁盘中加载模糊推理系统函数readfis( ) 调用格式 fisMat=readfis(‘filemame’)
18
例如利用以下命令可加载一个MATLAB自带的关于“小 费”问题的模糊推理系统tipper.fis。
>>fisMat=readfis('tipper');getfis(fisMat); 结果显示: Name = tipper Type = mamdani NumInputs = 2 InLabels = service food NumOutputs = 1 OutLabels = tip NumRules = 3 AndMethod = min OrMethod = max ImpMethod = min AggMethod = max DefuzzMethod = centroid
2
1 MATLAB模糊逻辑工具箱简介
1.1 模糊逻辑工具箱的功能特点 1.易于使用 模糊逻辑工具箱提供了建立和测试模糊逻辑系 统的一整套功能函数,包括定义语言变量及其隶 属度函数、输入模糊推理规则、整个模糊推理系 统的管理以及交互式地观察模糊. 提供图形化的系统设计界面 在模糊逻辑工具箱中包含五个图形化的系统设计工 具,这五个设计工具是: • 模糊推理系统编辑器,该编辑器用于建立模糊逻辑 系统的整体框架,包括输入与输出数目、去模糊化方 法等; • 隶属度函数编辑器,用于通过可视化手段建立语言 变量的隶属度函数; • 模糊推理规则编辑器; • 系统输入输出特性曲面测览器; • 模糊推理过程浏览器。
19
3. 获得模糊推理系统的属性函数getfis( ) 利用getfis( )可获取模糊推理系统的部分或全部特性,格式为 getfis(fisMat) getfis(fisMat,’fisPropname’) getfis(fisMat,’varType’,varIndex,’varPropname’); getfis(fisMat,’varType’,varIndex,’mf’,mfIndex) getfis(fisMat,’varType’,varIndex,’mf’,mfIndex,’mfPropname’);
fisMat=setfis(fisMat,vartype,varindex,’propname’,newprop)
fisMat=setfis(fisMat,vartype,varindex,’mf’,mfindex,’propname’,nemeprop);
23
该函数可以有3个、5个或7个输入参数。例 >>fisMat=readfis('tipper');fisMat=setfis(fisMat,'name','eating') 或 >>fisMat=readfis('tipper');fisMat=setfis(fisMat,'input',1,'name','help')
13
5.2 利用模糊逻辑工具箱建立模糊推理系统
5.2.1 模糊推理系统的建立、修改与存储管理 前面讨论了模糊推理系统的主要构成部分,即 一个模糊推理系统由输入、输出语言变量及其隶属 度函数、模糊规则、模糊推理机和去模糊化方法等 各部分组成,在MATLAB模糊逻辑工具箱中,把模 糊推理系统的各部分作为一个整体,并以文件形式 对模糊推理系统进行建立、修改和存储等管理功能 。表5-1所示为该工具箱提供的有关模糊推理系统管 理的函数及其功能。
20
例 >> fisMat=readfis('tipper') 或 >>fisMat=readfis('tipper'); getfis(fisMat,'type') >>fisMat=readfis('tipper'); getfis(fisMat,'input',1); >>fisMat=readfis('tipper'); getfis(fisMat,'input',1,'name') >>fisMat=readfis('tipper'); getfis(fisMat,'input',1,'mf',2); >>fisMat=readfis('tipper'); getfis(fisMat,'input',1,'mf',2,'name')
4
3. 支持模糊逻辑中的高级技术 • 自 适 应 神 经 模 糊 推 理 系 统 ( ANFIS , Adaptive Neural Fuzzy Inference System); • 用于模式识别的模糊聚类技术; • 模糊推理方法的选择,用户可在广泛采用的 Mamdani型推理方法和 Sugeno型推理方法两者之间选 择。
12
针对模糊逻辑系统的以上主要构成,在MATLAB 模糊逻辑工具箱中构造一个模糊推理系统有如下步骤: (1)模糊推理系统对应的数据文件,其后缀为.fis ,用于对该模糊系统进行存储、修改和管理; (2)确定输入、输出语言变量及其语言值; (3)确定各语言值的隶属度函数,包括隶属度函数 的类型与参数; (4)确定模糊规则; (5)确定各种模糊运算方法,包括模糊推理方法、 模糊化方法、去模糊化方法等。
16
例:>>fisMat=newfis(‘mysys’);getfis(fisMat) 显示:Name = mysys Type = mamdani NumInputs = 0 InLabels = NumOutputs = 0 OutLabels = NumRules = 0 AndMethod = min OrMethod = max ImpMethod = min AggMethod = max DefuzzMethod = centroid
10
5.1.3 模糊逻辑系统的构成 前面讨论了模糊逻辑系统的基本类型,标准型 模糊逻辑系统应用最为广泛。在MATLAB模糊逻辑 工具箱中主要针对这一类型的模糊逻辑系统提供了 分析和设计手段,但同时对高木一关野模糊逻辑系 统也提供了一些相关函数。下面将以标准型模糊逻 辑系统作为主要讨论对象。
11
构造一个模糊逻辑系统,首先必须明确其主要组成 部分。一个典型的模糊逻辑系统主要由如下几个部分 组成: (1)输入与输出语言变量,包括语言值及其隶属度 函数; (2)模糊规则; (3)输入量的模糊化方法和输出变量的去模糊化方 法; (4)模糊推理算法。
>>fisMat=readfis('tipper');fisMat=setfis(fisMat,'input',1,'mf',2,'name','wretched')
其中Ai(i=1,2,…,n)是输入模糊语言值,B是输出模糊语言值。
图5-1 基于标准模型的模糊逻辑系统原理图
8
2 基于高木——关野(Takagi——Sugeno)模型的 模糊逻辑系统 高木——关野模糊逻辑系统是一类较为特殊的模 糊逻辑系统,其模糊规则不同于一般的模糊规则形式。 在高木——关野模糊逻辑系统中,采用如下形式 的模糊规则: IF x1 is A1 and x2 is A2 and…and xn is An THEN y c 其中Ai(i=1,2,…,n)是输入模糊语言值,ci(i=1,2,…,n)x 是真值参数。
5
4. 集成的仿真和代码生成功能 模糊逻辑工具箱不但能够实现Simulink的无缝连接, 而且通过 Real-Time Workshop能够生成ANSI C源代 码,从而易于实现模糊系统的实时应用。 5. 独立运行的模糊推理机 在用户完成模糊逻辑系统的设计后,可以将设计结 果以ASCII码文件保存;利用模糊逻辑工具箱提供的模 糊推理机,可以实现模糊逻辑系统的独立运行或者作 为其他应用的一部分运行。
21
4. 将模糊推理系统以矩阵形式保存在内存中的数据 写入磁盘文件函数writefis( ) 模糊推理系统在内存中的数据是以矩阵形式存储的, 其对应的矩阵名为fisMat。当需要将模糊推理系统的 数据写入磁盘文件时,就可利用writefis( )函数。其调 用格式为 writefis(fisMat) writefis(fisMat,’filename’) writefis(fisMat,’filename’,’dialog’) 例: >>fisMat=newfis(’tipper’);writefis(fisMat,’my_ file’)
6
5.1.2 模糊推理系统的基本类型 在模糊系统中,模糊模型的表示主要有两类:一类 是模糊规则的后件是输出量的某一模糊集合,如NB, PB等,由于这种表示比较常用,且首次由Mamdani采 用,因而称它为模糊系统的标准模型或Mamdani模型 表示;另一类是模糊规则的后件是输入语言变量的函 数,典型的情况是输入变量的线性组合。由于该方法 是日本学者高木(Takagi)和关野(Sugeno)首先提 出来的,因此通常称它为模糊系统的Takagi-Sugeno (高木-关野)模型,或简称为Sugeno模型。
22
5. 以分行的形式显示模糊推理系统矩阵的所有属 性函数showfis( ) 调用格式 showfis(fisMat) 其中 fisMat为模糊推理系统在内存中的矩阵表示。 例:>>fisMat=readfis(’tipper’);showfis(fisMat) 6. 设置模糊推理系统的属性函数setfis( ) 调用格式 fisMat=setfis(fisMat,’propname’,newprop)
相关文档
最新文档