matlab计算模糊控制规则表
模糊控制规则表49条
![模糊控制规则表49条](https://img.taocdn.com/s3/m/237143bb6aec0975f46527d3240c844769eaa033.png)
模糊控制规则表49条1.如果误差小于等于0,则输出为0。
2. 如果误差大于0且小于等于0.5,则输出为0.5-误差。
3. 如果误差大于0.5且小于等于1,则输出为1-误差。
4. 如果误差大于1,则输出为1。
5. 如果误差为0且变化率小于等于0,则输出为0。
6. 如果误差为0且变化率大于0,则输出为0.5。
7. 如果误差小于等于0且变化率小于等于0,则输出为0。
8. 如果误差小于等于0且变化率大于0,则输出为0.5。
9. 如果误差大于0且小于等于0.2且变化率小于等于0,则输出为0.2-误差。
10. 如果误差大于0且小于等于0.2且变化率大于0,则输出为0.6-误差。
11. 如果误差大于0.2且小于等于0.4且变化率小于等于0,则输出为0.4-误差。
12. 如果误差大于0.2且小于等于0.4且变化率大于0,则输出为0.8-误差。
13. 如果误差大于0.4且小于等于0.6且变化率小于等于0,则输出为0.6-误差。
14. 如果误差大于0.4且小于等于0.6且变化率大于0,则输出为1-误差。
15. 如果误差大于0.6且小于等于0.8且变化率小于等于0,则16. 如果误差大于0.6且小于等于0.8且变化率大于0,则输出为1-误差。
17. 如果误差大于0.8且小于等于1且变化率小于等于0,则输出为1-误差。
18. 如果误差大于0.8且小于等于1且变化率大于0,则输出为1。
19. 如果误差小于等于0.1且变化率小于等于0,则输出为0。
20. 如果误差小于等于0.1且变化率大于0,则输出为0.4。
21. 如果误差大于0.1且小于等于0.3且变化率小于等于0,则输出为0.2-误差。
22. 如果误差大于0.1且小于等于0.3且变化率大于0,则输出为0.6-误差。
23. 如果误差大于0.3且小于等于0.5且变化率小于等于0,则输出为0.4-误差。
24. 如果误差大于0.3且小于等于0.5且变化率大于0,则输出为0.8-误差。
模糊控制的MATLAB实现具体过程(强势吐血推荐)
![模糊控制的MATLAB实现具体过程(强势吐血推荐)](https://img.taocdn.com/s3/m/987d9328f78a6529647d53af.png)
例:fismat=readfis(‘tipper’); //tipper.fis已经存在
③函数getfis
功能:取得模糊推理系统的部分或全部属性。 格式:getfis(a) //显示系统所有属性 //显示系统某一属性
getfis(a,’fisprop’)
getfis(a,’vartype’,varindex,’varprop’)
1 2,2(1):1
6、计算模糊推理输出结果函数evalfis 格式:y=evalfis(U,FIS)
说明:参数U是输入数据,FIS是模糊推理矩阵。 U的每一行是一个特定的输入向量,Y的每一行是 一个特定的输出向量。
如果输入U是M*N矩阵,则系统是N输入的, 返回的Y是M*L矩阵,L是系统的输出的数目。
功能:绘制语言变量所有语言值的隶属度函数曲线。
格式:plotmf(fismat,varType,varIndex) 说明:参数fismat指明模糊推理系统的对应矩阵变量 名称;varType指明变量类型(’input’或’output’); varIndex指明输入或输出语言变量的编号。 例: plotmf(a,’input’,2)
例:a=newfis(‘tipper’);
a=addvar(a,’input’,’service’,[0 10]); a=addmf(a,’input’,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]);
在rulelist的每一行中,前m个数字表示各输入语言 变量的语言值(隶属度函数的编号),随后的n个数字表 示输出语言变量的语言值,第n+m+1个数字是该规则的 权重,权重的值在0到1之间,一般设定为1;第n+m+2 个数字为0或1两者之一,为1表示模糊规则各输入语言 变量之间是and关系,为0则表示是or关系。
模糊控制查询表的MATLAB实现
![模糊控制查询表的MATLAB实现](https://img.taocdn.com/s3/m/a593dbf1770bf78a652954c4.png)
p de c ies n er s rb i deai h way o tl e t h w t get f z y -c tol qu y a e y he o a u z onr — er tbl b t MATL pr AB ogr amm ig. s n Thi cor l a e to —tbl m a be tr d n h c y so e i t e ompue t wi t f m of tbl W hih t he or h a a e. c ca i n mpr e o gr a l te et y h ope ain e f en ySuc a PL r t al fi o ci c h s C co tol rec. o e n r l ,t wh s me o y s v y il a o e m r i er lt te,nd n—l ras nig an s ral e i ne e o n c alo be e i d. z Ke wOrs: z y onr l y d f z c to qu r a eM AT AB. c to,n—l e e o ig u ey t bl. L PI onr l o i ras nn n
级 保持 为 卜6 一 , 4 一 ,2 一 , , ,, , , ,} ,5 一 ,3 一 , 10 12 3 4 5 6。
输 入 变 量偏 差 e和偏 差 变化 率 e c和输 出变 量 A P A i K 、 T 的
模 糊 语 言 值 均 为 { B, N NM, S, O,S, M, B 。 为 了 编 程 方 N Z P P P }
值 , 为 12, 4 7 即 , 3,… 。
表 1 用 数 字 语 言 值表 示 输 入 变 量 × 1及 x 2的 隶 属度 矢 量 表
系统的模糊控制MATLAB实现
![系统的模糊控制MATLAB实现](https://img.taocdn.com/s3/m/5adf49d6bed5b9f3f80f1c9e.png)
智能控制大作业第一次大作业哈尔滨工业大学2017年5月25日姓名: 周庆强 学号: 1140810106题目:对一个系统——,假设给系统一个阶跃值r=30,采样时间为1s ,系统的初始值为r(0)=0,利用常规的模糊控制器对系统进行控制。
思路:在仿真系统中,不需要考虑信号的A/D 和D/A 转换,模糊控制系统框图如下:1、选择观测量和控制量将偏差e ,即当前位置-目标目标,作为观察量(输入量)1, %将偏差的变化 量ec ,即e(t)-e(t-1),作为观察量(输入量)2,选取阀门开度u 为控制量。
2、输入量和输出量的模糊化将偏差e 划分为5个模糊集,负大(NB)、负小(NS)零(Z0)、正小(PS)正大 (PB , e 为负表示当前水位低于目标水位,e 为正表示当前水位高于目标水位。
设定e 的取inpul ・ output值范围为[-3, 3],隶属度函数如下。
同理,将偏差的变化量ec 划分为5个模糊集,负大(NB)、负小(NS)零 (Z0)正小(PS)正大(PB), ec 为负表示该时刻水位比上一时刻水位小, ec 为郑 表示该时刻水位比上一时刻水位大,。
设定ec 的取值范围为[-3,3],隶属度函数 如下。
d一壬」SEE古•■N 18 G 4 2 OQ o.u a a-LI巴CDqE住告0)2冒0 ec1233、制定模糊规则模糊规则的制定是模糊控制的核心内容, 控制性能的好坏很大程度上由模糊 规则决定。
ecNBNS ZO PS PB NB PB PB PB PB PB NS PB PB PS PS ZO ZO PB PS ZO NS NB PSZO PS NS NB NB PBNBNBNBNBNB将上述用语言描述的规则转化为“ IF A ,THEN B 的语句如下: 1. If (e is NB) and (ec is NB)then (u i s PB 。
2. If (e is NB) and (ec is NS)then (u i s PB) 3. If (e is NB) and (ec is ZO)then (u i s PB) 4. If (e is NB) and (ec is PS)then (u i s PB) 5. If(e is NB) and (ec is PB)then (u i s PB )-4 3 2 -1同样将控制量u 划分为5个模糊集,负大(NB)、负小(NS)零(ZO)正小(PS) 正大(PB ,u 为负表示减小控制量,u 为正表示增大控制量。
Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)
![Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)](https://img.taocdn.com/s3/m/32e257db4afe04a1b071dee3.png)
引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。
关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。
用MATLAB编写模糊控制表计算程序
![用MATLAB编写模糊控制表计算程序](https://img.taocdn.com/s3/m/f0b61aeab8f67c1cfad6b85a.png)
clc;clear;E = [1,0.8,0.7,0.4,0.1,0,0,0,0,0,0,0,0;0.2,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0.1,0.3,0.7,1,0.7,0.2,0,0,0,0,0,0;0,0,0,0,0.1,0.6,1,0,0,0,0,0,0;0,0,0,0,0,0,1,0.6,0.1,0,0,0,0;0,0,0,0,0,0,0.2,0.7,1,0.7,0.3,0.1,0;0,0,0,0,0,0,0,0,0.2,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0.1,0.4,0.7,0.8,1]%%8*13 EC =[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1]%%7*13U=[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1]%%7*13rulelist= [1,1,1,1,2,4,4;1,1,1,1,2,4,4;2,2,2,2,4,5,5;2,2,3,4,5,6,6;2,2,3,4,5,6,6;3,3,4,6,6,6,6;4,4,6,7,7,7,7;4,4,6,7,7,7,7]%%8*7for iii=1:13 %偏差E的模糊值控制for jjj=1:13 %偏差率EC的模糊值控制for ii=1:8 %偏差E的模糊规则控制for jj=1:7 %偏差变化率EC的模糊规则控制A_rulelist = rulelist(ii,jj); %查模糊规则表%******计算C1A'************A = E(ii,:); %取A'C_A = U(A_rulelist,:); %取Cifor i=1:13 %求R1Afor j=1:13if(A(i) > C_A(1,j))Ra(i,j) = C_A(1,j);elseRa(i,j) = A(i);endendendAA = zeros(1,13); %取AA=A' 如AA=[1,0,0,0,0,0,0,0,0,0,0,0,0]; %AA(1,iii) = E(ii,iii);AA(1,iii) = 1;for i=1:13 %先取小for j=1:13if(AA(j) > Ra(j,i))A_qux(j,i) = Ra(j,i);elseA_qux(j,i) = AA(j);endendendfor i=1:13 %再取大,,,求和CiAmax = A_qux(1,i);for j=1:13if(max < A_qux(j,i))max = A_qux(j,i);endendCiA(i) = max;end%********CiA计算完毕*********%*******计算CiB'*************B = EC(jj,:); %取B' ???C_B = U(A_rulelist,:); %取Ci ??? for i=1:13 %求R1Bfor j=1:13if(B(1,i) > C_B(1,j))Rb(i,j) = C_B(1,j);elseRb(i,j) = B(1,i);endendendBB = zeros(1,13); %取BB=B' 如BB=[1,0,0,0,0,0,0,0,0,0,0,0,0]; %BB(1,jjj) = EC(jj,jjj);BB(1,jjj) = 1;for i=1:13 %先取小for j=1:13if(BB(j) > Rb(j,i))B_qux(j,i) = Rb(j,i);elseB_qux(j,i) = BB(j);endendendfor i=1:13 %再取大,,,求和CiAmax = B_qux(1,i);for j=1:13if(max < B_qux(j,i))max = B_qux(j,i);endendend%*******计算CiB'完毕****%*******计算C1'=CiA'交CiB'*********for i=1:13if CiA(i) > CiB(i)Ci(i) = CiB(i);elseCi(i) = CiA(i);endend%*******计算C1'完毕************C((ii-1)*7+jj,:) = Ci; % 将Ci存到数组C中,C是56*13的数组endend%根据式Ui=C'=C1'并C2'并……并C56'for i=1:13max = C(1,i);for j=1:56max = C(j,i);endendUi(i) = max;end%用重心法进行解模糊运算,并映射为实际的控制量sum_fenz = 0;sum_fenm = 0;for i=1:13sum_fenz = sum_fenz + (i-7)*Ui(i);sum_fenm = sum_fenm + Ui(i);endcore = sum_fenz/sum_fenm;U_control(iii,jjj) = core;endendU_control = round(U_control.*10000)/10000; %对控制量保留小数点后两位。
基于MATLAB生成模糊控制规则离线查询表
![基于MATLAB生成模糊控制规则离线查询表](https://img.taocdn.com/s3/m/1a6f6271763231126fdb111f.png)
0 引言模糊控制隶属于智能控制,是一种基于规则的近似推理的非线性智能控制。
如果说,传统的控制方式需要被控对象精确的数学模型,而模糊控制则是以人类智能活动的角度为基础实施控制,因此,在实际中,传统控制方法无能为力的非线性场合,模糊控制却能起到很好的控制作用。
因此,实际应用中,由于系统复杂、很难建立精确数学模型的非线性系统,模糊控制已经成为一种最有效的控制方法。
模糊控制规则表是模糊控制的核心,其描述的是输入的偏差、偏差变化量与控制的输出之间的对应关系,采用手工计算方式,量大且费时;采用在线计算方式,往往又影响系统被控对象的实时控制效果。
因此,在应用模糊控制时,首先针对输入的不同组合,采用离线计算方式算出相应的控制输出量,构成模糊控制规则查询表,实际控制时再将模糊控制规则查询表嵌入在各种控制平台,如单片机、PLC 等,实现离线计算、在线查表,这样,一方面减少了模糊控制的在线运算量,同时又实现了模糊控制的实时控制效果。
实际应用中发现,对模糊控制规则表的生成,在离散论域分档较少的条件下,多采用手工计算,而在离散论域分档较多的条件下,手工计算量太大,用MATLAB 软件编程实现,对MATLAB 软件的编程能力要求又较高,因此,本文以二维温度模糊控制规则查询表的生成为例来说明如何简单有效的利用MATLAB 软件生成模糊控制规则离线查询表。
1 实例分析应用MATLAB2014a 软件说明生成模糊规则离线查询表的过程。
设二维温度模糊控制器[1 2]的输入为温度偏差E 和温度偏差变化率EC,输出为温控器输出电压U。
模糊控制器模型见图1。
2 模糊控制规则离线查询表生成步骤[34 5](1)利用模糊逻辑控制工具箱生成温度模糊推理系统在MATLAB2014a 命令窗口中输入fuzzy 打开模糊控制工具箱,编辑输入输出变量的隶属度函数和模糊控制规则,然后将模糊推理系统保存为mytest.fis。
设温度偏差E、偏差变化率EC 和温控器输出电压U 的模糊论域为[-6 6],三者的语言变量赋值均为{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数均采用三角函数,如图2所示,并根据温度模糊控制规则表1逐条添加模糊控制规则,清晰化采用加权平均法。
智能控制作业
![智能控制作业](https://img.taocdn.com/s3/m/f3d119e5f90f76c661371a1f.png)
题目1:求取模糊控制表(课本62-67页,matlab编程求解)解:MATLAB编程如下:%实现功能:计算模糊控制表clcclear%x的隶属度表,其中x代表的是误差eX=[1.0 0.8 0.7 0.4 0.1 zeros(1,8);0.2 0.7 1.0 0.7 0.3 zeros(1,8);0 0.1 0.3 0.7 1.0 0.7 0.2 zeros(1,6);zeros(1,4) 0.1 0.6 1.0 zeros(1,6);zeros(1,6) 1.0 0.6 0.1 zeros(1,4);zeros(1,6) 0.2 0.7 1.0 0.7 0.3 0.1 0;zeros(1,8) 0.2 0.7 1.0 0.7 0.3;zeros(1,8) 0.1 0.4 0.7 0.8 1.0];%y的隶属度表,其中y表示的是误差的导数Y=[1.0 0.7 0.3 zeros(1,10);0.3 0.7 1.0 0.7 0.3 zeros(1,8);0 0 0.3 0.7 1.0 0.7 0.3 zeros(1,6);zeros(1,4) 0.3 0.7 1.0 0.7 0.3 zeros(1,4);zeros(1,6) 0.3 0.7 1.0 0.7 0.3 0 0;zeros(1,8) 0.3 0.7 1.0 0.7 0.3;zeros(1,10) 0.3 0.7 1];%z的隶属度表,其中z表示的是控制量uZ=Y;%模糊控制规则表%其中: 1代表NB,2代表NM,3代表NS% 4代表ZE,5代表PS,6代表PM,7代表PBrule=[1 1 1 1 2 4 4;1 1 1 12 4 4;2 2 2 2 4 5 5;2 23456 6;2 23456 6;3 34 6 6 6 6;4 4 6 7 7 7 7;4 4 6 7 7 7 7];Set=[-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6]; %模糊集合control_data=[]; %control_data待求的模糊控制表for i=1:13 %控制模糊表的行变量control=[];for j=1:13 %控制模糊表的列变量x0=Set(i);y0=Set(j);CCC=[]; %存放Ci;CCC矩阵将来存放的是56*13维的矩阵for m=1:8 %模糊控制规则表的行变量Ai=X(m,:); %Ai为列向量for n=1:7 %模糊控制规则表的列变量Bi=Y(n,:); %Bi为列向量Ci=Z(rule(m,n),:); %模糊控制规则表的控制变量%得到RiA矩阵RiA=zeros(13,13);for p=1:13for q=1:13RiA(p,q)=min(Ai(p),Ci(q));endend%AA表示A' 矩阵AA=zeros(1,13);[a1,b1]=find(x0==Set);AA(a1,b1)=1;%最小最大原则求取CiACIA_temp=zeros(13,13);for ii=1:13CIA_temp(:,ii)=min(AA',RiA(:,ii));%先取小endCIA=max(CIA_temp);%再取大%%%%%%%%%%%%%%%%%%%%%%%%%得到RiB矩阵RiB=zeros(13,13);for p=1:13for q=1:13RiB(p,q)=min(Bi(p),Ci(q));endend%BB表示B' 矩阵BB=zeros(1,13);[a2,b2]=find(y0==Set);BB(a2,b2)=1;%最小最大原则求取CiBCIB_temp=zeros(13,13);for ii=1:13CIB_temp(:,ii)=min(BB',RiB(:,ii));endCIB=max(CIB_temp);%求CIA和CIB的交C=min(CIA,CIB);CCC=[CCC;C];endend%求出56个Ci的并C_max=max(CCC);%利用重心法解模糊temp=C_max.*Set;control_temp=sum(temp)/sum(C_max);control=[control,control_temp];endcontrol_data=[control_data;control];enddisp('模糊控制表如下:');control_data=roundn(control_data,-2) %保留2位小数且四舍五入fid=fopen('kongzhi.txt','w');count=fprintf(fid,'%d\n',control);fclose(fid);运行结果如下:题目二:被控对象)14)(12(20)(++=s s s G 给定为100,设计一个模糊控制器实现对象系统的控制。
模糊控制的Matlab仿真实例分析
![模糊控制的Matlab仿真实例分析](https://img.taocdn.com/s3/m/2c493c72e3bd960590c69ec3d5bbfd0a7856d555.png)
.
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 仿真工具来设计和搭建自己独特的模型。
模糊控制实验大纲
![模糊控制实验大纲](https://img.taocdn.com/s3/m/d3a415ea89eb172ded63b7b9.png)
实验一熟悉模糊工具箱一、目的和要求1.目的(1)通过本次实验,进一步了解模糊控制的基本原理、模糊模型的建立和模糊控制器的设计过程。
(2)掌握MATLAB模糊逻辑工具箱的图形用户界面设计模糊控制器的过程。
2.要求(1)充分理解实验内容,并独立完成实验报告。
(2)实验报告要求:实验题目、实验具体内容、结果分析、收获或不足。
二、实验内容1、利用matlab中的模糊逻辑工具箱提供的图形用户界面(GUI)工具设计一个两输入、一输出的模糊控制器,控制器的要求如下:(1)设模糊控制器的输入变量为:误差E和误差变化EC,输出量为U。
(2)隶属度函数:◆隶属度函数均为三角函数◆E、EC和U的模糊语言变量集均为{NB,NM,NS,ZO,PS,PM,PB}◆E和EC论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}◆U的论域为{-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}(3)控制规则表如下:表1 模糊控制表三.实验步骤模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(FIS)编辑器;隶属函数编辑器;模糊规则编辑器;模糊规则观察器;输出曲面观察器。
1.模糊控制器结构设计FIS处理系统有多少个输入变量,输出变量,名称是什么,模糊算子“与”(min,prod乘积,custom自定义),“或”(max大,probor 概率统计方法,custom),推理方法(min,prod,custom),聚类方法(max,probor,sum,custom),解模糊的方法(centroid 质心法,bisector中位线法,middle of maximum,largest of maximum,smallest of maximum)。
Matlab的FIS界面如图3所示。
图3 模糊推理系统(FIS)界面2.隶属函数编辑器:确定各个变量的论域和显示范围(左下角编辑区内),如图4所示。
模糊控制在matlab中的实例
![模糊控制在matlab中的实例](https://img.taocdn.com/s3/m/1a66ea1be3bd960590c69ec3d5bbfd0a7956d590.png)
模糊控制在matlab中的实例以下是一个模糊控制在MATLAB中的简单实例:假设我们要设计一个模糊控制器来控制一个水箱中水位的高低。
我们可以先建立一个模糊推理系统,其中包含输入和输出变量以及规则。
1. 输入变量:水箱中的水位(假设范围为0到100)。
2. 输出变量:水泵的流量(假设范围为0到10)。
我们需要定义一组模糊规则,例如:如果水箱中的水位为低,则水泵的流量为低。
如果水箱中的水位为中等,则水泵的流量为中等。
如果水箱中的水位为高,则水泵的流量为高。
将这些规则转换成模糊集合,如下所示:输入变量:- 低:[0, 30]- 中等:[20, 50]- 高:[40, 100]输出变量:- 低:[0, 3]- 中等:[2, 6]- 高:[4, 10]接下来,我们可以使用MATLAB的Fuzzy Logic Toolbox来建立模糊推理系统。
以下是一个简单的MATLAB脚本:```% 定义输入变量water_level = fisvar("input", "Water Level", [0 100]); water_level.addmf("input", "low", "trapmf", [0 0 30 40]); water_level.addmf("input", "medium", "trimf", [20 50 80]);water_level.addmf("input", "high", "trapmf", [60 70 100 100]);% 定义输出变量pump_flow = fisvar("output", "Pump Flow", [0 10]);pump_flow.addmf("output", "low", "trapmf", [0 0 3 4]); pump_flow.addmf("output", "medium", "trimf", [2 6 8]); pump_flow.addmf("output", "high", "trapmf", [7 8 10 10]); % 建立模糊推理系统rule1 = "If Water Level is low then Pump Flow is low"; rule2 = "If Water Level is medium then Pump Flow is medium"; rule3 = "If Water Level is high then Pump Flow is high"; rules = char(rule1, rule2, rule3);fis = newfis("Water Tank Fuzzy Controller");fis = addvar(fis, water_level);fis = addvar(fis, pump_flow);fis = addrule(fis, rules);% 模糊控制器输入water_level_value = 70;% 运行模糊推理系统pump_flow_value = evalfis([water_level_value], fis);disp(["Water level: " num2str(water_level_value) "%"]); disp(["Pump flow: " num2str(pump_flow_value)]);```在这个简单的例子中,我们使用了Fuzzy Logic Toolbox来定义输入和输出变量以及规则,并运行模糊推理系统来计算输出值。
模糊控制器的matlab设计步骤
![模糊控制器的matlab设计步骤](https://img.taocdn.com/s3/m/1985891abb1aa8114431b90d6c85ec3a87c28b36.png)
模糊PID控制器设计和仿真步骤:各变量隶属度函数的确定第一步:各变量隶属度函数的确定1、 用于PID 参数调整的模糊控制器采用二输入三输出的形式。
该控制器是以误差E 和误差变化率EC 作为输入,PID 控制器的三个参数P、I、D 的修正△KP、△KI、△KD 作为输出,如图1;2、 取输入E 和EC 和输出△KP、 △KI、△KD 模糊子集为{NB,NM,NS,ZO,PS,PM,PB},其论域为[-6,6],量化等级为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};如图23、 在模糊逻辑工具箱的隶属度函数编辑器中,选择输入量E,EC 隶属函数为高斯型(gaussmf),输出△KP、△KI、△KD 的隶属函数为三角形(trimf),如图2和3。
图1图2图3第二步:根据图4规则建立模糊规则表,如图5:图4图5第三步:设置参数:与方式与方式 (And method)为min ;或方式(Or method)为max ;推理推理 (Implication)为min ;合成;合成 (Aggregation)为max ;去模糊(Defuzzification)为重心平均法(centroid )。
)。
第四步:保存该FIS 文件,取名为FuzzyPID.fis第五步:在MA MATLABTLAB 的M 文件编辑器里建立一个名为FuzzyPID.m 的文件,其内容为:martrix=readfis (‘Fuzzypid.fis ’),并运行。
,并运行。
第六步:打开SIMULINK ,新建一个Model ,选择一个Subsystem ,在其中编辑模块,如图6,并设置模糊化因子KE=KEC=0.01,解模糊因子KP=0.5,KI=KD=0.01,并在Fuzzy Logic Controller 模块的Parameters 中输入readfis('FuzzyPID.fis'):图6第七步:返回到新建的Model 中,按照如图7所示建立模糊PID 控制器,其中,控制器,其中,PID PID 初始值为KP0=20,KI0=1.35,KD0=3.7,传递函数为:图7第八步:保存为FuzzyPID.mdl 并运行。
Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)
![Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)](https://img.taocdn.com/s3/m/32e257db4afe04a1b071dee3.png)
引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。
关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。
Matlab的一些函数含模糊控制
![Matlab的一些函数含模糊控制](https://img.taocdn.com/s3/m/dea48ab7b1717fd5360cba1aa8114431b90d8e20.png)
Matlab的一些函数含模糊控制abs绝对值,模acos反余弦acosh反双曲余弦acot反余切acoth反双曲余切acsc反余割acsch反双曲余割all所有元素均非零则为真alpha透明控制angle相角ans最新表达式的运算结果any有非零元则为真area面域图asec反正割asech反双曲正割asin反正弦asinh反双曲正弦atan反正切atan2四象限反正切atanh反双曲正切autumn红、黄浓淡色axis轴的刻度和表现Bbbar直方图binocdf二项分布概率binopdf二项分布累积概率binornd产生二项分布随机数组blanks空格符号bode给出系统的对数频率曲线bode(Q) bone蓝色调浓淡色阵box坐标封闭开关break终止最内循环brighten控制色彩的明暗butterButterWorth低通滤波器Cccaxis(伪)颜色轴刻度cd设置当前工作目录cdf2rdf复数对角型转换到实块对角型ceil朝正无穷大方向取整cell创建单元数组char创建字符串数组或者将其他类型变量转化为字符串数组charfcnMaple函数Children图形对象的子对象clabel等高线标注class判别数据类别clc清除指令窗中显示内容clear从内存中清除变量和函数clf清除当前图形窗图形close关闭图形窗collect合并同类项Color图形对象色彩属性colorbar显示色条colorcube三浓淡多彩交错色colordef定义图形窗色彩colormap设置色图comet彗星状轨迹图comet3三维彗星动态轨迹线图compass射线图;主用于方向和速度cond矩阵条件数conj复数共轭continue将控制转交给外层的for或while循环contour等高线图contourf填色等高线图conv卷积和多项式相乘cool青和品红浓淡色图copper线性变化纯铜色调图corrcoef相关系数cos余弦cosh双曲余弦cot余切coth双曲余切cov协方差矩阵csc余割csch双曲余割cumsum元素累计和cumtrapz梯形法累计积分Dddblquad二重(闭型)数值积分指令deconv解卷和多项式相除del2计算曲率demos演示函数det行列式的值diag创建对角阵,抽取对角向量diff求导数,差分和近似微分digits控制符号数值的有效数字位数dir列出目录清单dirac单位冲激函数disp显示矩阵和文字内容disttool概率分布计算交互界面doc列出指定工具包中所有函数名docsearch进行多词条检索double把符号常数转化为16位相对精度的浮点数值对象drawnow刷新屏幕dsolve求解符号常微分方程Eeedit矩阵编辑器,打开M文件eig矩阵特征值和特征向量end数组的最大下标,结束for,while,if语句eps浮点相对误差EraseMode图形对象属性error显示错误信息exit关闭MATLABexp指数expand对指定项展开expm矩阵指数eye单位阵ezcontour画等位线ezcontourf画填色等位线ezmesh画网线图ezmeshc画带等位线的网线图ezplot绘制符号表达式的二维图形ezplot3画三维曲线ezpolar画极坐标曲线ezsurf画曲面图ezsurfc画带等位线的曲面图Fffactor进行因式或因子分解false按指定大小创建全0逻辑数组feather从X轴出发的复数向量图,羽毛图feval函数宏指令fill多边形填色图find寻找非数单下标标识findsym确认表达式中自由符号变量fix朝零方向取整flag红-白-蓝-黑交错色图fliplr矩阵的左右翻转flipud矩阵的上下翻转floor朝负无穷大方向取整fminbnd非线性函数在某区间中极小值fminsearch单纯形法求多元函数极值点指令foh三角形保持器for(end)按规定次数重复执行语句format设置数据输出格式fourierFourier变换fsolve解非线性方程组的最简单格式function函数文件头functions观察函数句柄内涵functionhandle函数句柄funfun数值泛函函数和ODE解算器funm计算一般矩阵函数fzero单变量函数的零点Gggallery产生测试矩阵gca获得当前轴的柄gcf获得当前图的柄general通用指令get获得图柄getframe获得影片动画图象的帧ginput用鼠标在图上获取数据global定义全局变量gradient梯度gray线性灰度gridon/off画坐标网格线Hhheaviside单位阶跃函数help在线帮助指令helpbrowser超文本文档帮助信息helpdesk超文本文档帮助信息helpwin打开在线帮助窗hidden网线图消隐开关hist统计频数直方图histfit带拟曲线的统计频数直方图holdon/off图形的保持horner转换成嵌套形式hot黑-红-黄-白交错色图hsv饱和色彩图Iii,j虚数单位ifend条件执行语句if-else-end程序分支控制ifourierFourier反变换ilaplaceLaplace反变换imag复数虚部image图像impulse给出系统的冲激响应ind2sub据单下标换算出全下标inf或Inf无穷大inline创建内联函数input提示键盘输入int计算积分int2str整数转换为字符串inv矩阵的逆invhilbHilbert矩阵法求逆阵isa判断指定变量类别ischar若是字符串则为真isempty若是空矩阵则为真isfinite若是有限数则为真isglobal若是全局变量则为真ishandle是否图柄isinf若是无穷大则为真isletter串中是字母则为真islogical若是逻辑数则为真isnan若为非数则为真isnumeric若是数值则为真isolatemaple的特殊指令isprime是否质数isreal若是实数矩阵则为真isspace串中是空格则为真iztransZ反变换JjjacobianJacobian矩阵jet变异HSV色图jordanJordan分解Kkkeyboard键盘获得控制权LllaplaceLaplace变换legend形成图例说明length确定数组长度light灯光控制lighting设置照明模式limit求极限line创建线对象LineStyle图形线对象属性-线型LineWidth图形属性-线宽linmod2从SIMULINK模型得到系统的状态方程linspace线性等分向量load从磁盘调入数据变量Location图形对象属性-位置log自然对数log10常用对数log2以2为底的对数logical将数值转化为逻辑值logspace对数等分向量lookfor关键词检索Mmmagic魔方阵maple进入MAPLE工作空间计算Marker图形对象属性-点形状MarkerEdge-Color图形对象属性-点边界色彩MarkerFace-Color图形对象属性-点域色彩MaekerSize图形对象属性-点大小material对象材质max最大值md创建目录mean平均值mesh三维网线图meshgrid用于三维曲面的分格线坐标mfun对MAPLE中若干经典特殊函数的数值计算mfunlistMAPLE经典特殊函数列表mhelp查阅Maple中的库函数及其调用方法min最小值minreal状态方程最小实现mkdir创建目录mod模数求余mod(a,b)求的是a除以b的余数。
matlab计算模糊控制规则表
![matlab计算模糊控制规则表](https://img.taocdn.com/s3/m/234dbc17cc7931b765ce153f.png)
程序运行结果:输出量的模糊集合表U_control =Columns 1 through 8-5.3500 -5.2353 -5.3500 -5.2353 -5.3500 -5.2353 -4.6923 -4.2581-5.0000 -4.9474 -5.0000 -4.9474 -5.0000 -4.9474 -3.8571 -3.7143-4.6923 -4.5217 -4.6923 -4.5217 -4.6923 -4.5217 -3.0526 -2.9302-4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -2.9302 -2.2909-4.0000 -4.0000 -3.7812 -3.7586 -3.4706 -3.4194 -2.4318 -1.7925-4.0000 -4.0000 -3.3636 -3.0769 -2.4667 -2.1176 -1.5000 -1.0476-3.5882 -3.5484 -2.9250 -2.6000 -0.9600 -0.5094 0 0.5094-2.9231 -2.9231 -2.3333 -1.9057 -0.2632 1.0476 1.5000 2.1176-1.8056 -1.7879 -0.5652 -0.3137 0.4400 1.7925 2.4318 3.4194-1.0000 -1.0000 0.2453 0.9385 1.4211 2.2909 2.9302 4.2581-0.5833 -0.6364 0.6875 1.4211 1.9375 2.9302 3.0526 4.5217-0.2333 -0.2414 1.1190 1.7925 2.3571 3.7143 3.8571 4.94740 0 1.2857 2.0000 2.7143 4.2581 4.6923 5.2353Columns 9 through 13-2.7143 -2.0000 -1.2857 0 0-2.3571 -1.7925 -1.1190 0.2414 0.2333-1.9375 -1.4211 -0.6875 0.6364 0.5833-1.4211 -0.9385 -0.2453 1.0000 1.0000-0.4400 -0.0364 0.1600 1.6000 1.63160.2632 1.9057 2.3333 2.9231 2.92310.9600 2.6000 2.9250 3.5484 3.58822.46673.0769 3.36364.0000 4.00003.4706 3.7586 3.78134.0000 4.00004.2581 4.2581 4.2581 4.2581 4.25814.6923 4.5217 4.6923 4.5217 4.69235.0000 4.9474 5.0000 4.9474 5.00005.3500 5.2353 5.3500 5.2353 5.3500Matlab程序:%作业:计算模糊控制规则表clc;clear;%偏差E的隶属函数表E = [1,0.8,0.7,0.4,0.1,0,0,0,0,0,0,0,0;0.2,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0.1,0.3,0.7,1,0.7,0.2,0,0,0,0,0,0;0,0,0,0,0.1,0.6,1,0,0,0,0,0,0;0,0,0,0,0,0,1,0.6,0.1,0,0,0,0;0,0,0,0,0,0,0.2,0.7,1,0.7,0.3,0.1,0;0,0,0,0,0,0,0,0,0.2,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0.1,0.4,0.7,0.8,1] %8*13的矩阵%偏差E变化率EC的隶属函数表EC =[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制量U的隶属函数表,与偏差变化率隶属函数相同U=[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制规则表,E的模糊分割数为8,EC的模糊分割数为7,包含最大可能的规则数为7*8=56rulelist= [1,1,1,1,2,4,4;1,1,1,1,2,4,4;2,2,2,2,4,5,5;2,2,3,4,5,6,6;2,2,3,4,5,6,6;3,3,4,6,6,6,6;4,4,6,7,7,7,7;4,4,6,7,7,7,7] %8*7的矩阵%********计算模糊控制规则表************for iii=1:13for jjj=1:13for ii=1:8for jj=1:7A_rulelist = rulelist(ii,jj); %模糊控制规则简表对应输出语言值%******计算CiA'************A = E(ii,:); %取Ai'C_A = U(A_rulelist,:); %取Ci' %*****RiA=Ai'与Ci‘对应取小的值,RiA为13*13矩阵*******for i=1:13for j=1:13if(A(i) > C_A(1,j))Ra(i,j) = C_A(1,j);elseRa(i,j) = A(i);endendendAA = zeros(1,13); %取AA=A'AA(1,iii) = 1;for i=1:13 %先取小,C'iA=Ai'。
第七章 模糊控制(matlab)
![第七章 模糊控制(matlab)](https://img.taocdn.com/s3/m/0606ef482e3f5727a5e96230.png)
2012-1-10
22
2012-1-10
23
2012-1-10
24
插入规则
为在规则编辑器中插入第一条规则,如下选择: 1) 在变量service下选poor; 2) 在变量food下选rancid; 3) 在Connection框内选中无线按钮or; 4) 在输出变量tip下选cheap。 产生的第一条规则是: 1) 1 if (service is poor) or (food is rancid) then (tip is cheap) (1) 第二、三条规则 2)if (service is good) then (tip is average) (1) 3)if (service is excellent) or (food is delicious) then (tip is generous) (1) (.)为权值,缺省为1
2012-1-10 26
规则观察器
① ⑥ ② ⑧ ③ ⑨ ④ ⑤
2012-1-10
⑦
⑩
27
小费问题曲面观察器
2012-1-10
28
如果要观察某一输入变量对输出的影响,则可将另一变量屏 蔽。下图仅给出了服务与小费间的关系(可选择用于绘图的任 意两个输入和任意一个输出绘制3D图形)。
2012-1-10
特别浓缩的规则版本:
1 1, 1 (1) : 2 2 0, 2 (1) : 1 3 2, 3 (1) : 2 这是机器处理的版本。此结构中的第一列对应于输入变 量,第二列对应于输出变量,第三列显示作用于规则上的权 值,第四列是指明或者是OR(2)规则或者是AND(1)规则的简 写。前两列中的数表示隶属度函数的索引号。
2012-1-10 15
matlab模糊控制
![matlab模糊控制](https://img.taocdn.com/s3/m/8896087f168884868762d693.png)
用 Matlab 中的 Fuzzy 工具箱做一个简单的模糊控制,流程如下:1、创建一个 FIS (Fuzzy Inference System ) 对象,a =newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzz Method)一般只用提供第一个参数即可,后面均用默认值。
2、增加模糊语言变量a = addvar(a,'varType','varName',varBounds)模糊变量有两类:input 和 output。
在每增加模糊变量,都会按顺序分配一个index,后面要通过该 index 来使用该变量。
3、增加模糊语言名称,即模糊集合。
a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每个模糊语言名称从属于一个模糊语言。
Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。
参数 mfType 即隶属度函数(Membership Functions),它可以是 Gaussmf、trimf、trapmf等,也可以是自定义的函数。
每一个语言名称也会有一个 index,按加入的先后顺序得到,从 1 开始。
4、增加控制规则,即模糊推理的规则。
a = addrule(a,ruleList)其中 ruleList 是一个矩阵,每一行为一条规则,他们之间是 ALSO 的关系。
假定该 FIS 有 N 个输入和 M 个输出,则每行有 N+M+2 个元素,前 N 个数分别表示 N 个输入变量的某一个语言名称的 index,没有的话用 0 表示,后面的M 个数也类似,最后两个分别表示该条规则的权重和个条件的关系,1 表示AND,2 表示 OR。
例如,当“输入1”为“名称1”和“输入2”为“名称3”时,输出为“输出1”的“状态2”,则写为:[1 3 2 1 1]5、给定输入,得到输出,即进行模糊推理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序运行结果:输出量的模糊集合表U_control =Columns 1 through 8-5.3500 -5.2353 -5.3500 -5.2353 -5.3500 -5.2353 -4.6923 -4.2581-5.0000 -4.9474 -5.0000 -4.9474 -5.0000 -4.9474 -3.8571 -3.7143-4.6923 -4.5217 -4.6923 -4.5217 -4.6923 -4.5217 -3.0526 -2.9302-4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -2.9302 -2.2909-4.0000 -4.0000 -3.7812 -3.7586 -3.4706 -3.4194 -2.4318 -1.7925-4.0000 -4.0000 -3.3636 -3.0769 -2.4667 -2.1176 -1.5000 -1.0476-3.5882 -3.5484 -2.9250 -2.6000 -0.9600 -0.5094 0 0.5094-2.9231 -2.9231 -2.3333 -1.9057 -0.2632 1.0476 1.5000 2.1176-1.8056 -1.7879 -0.5652 -0.3137 0.4400 1.7925 2.4318 3.4194-1.0000 -1.0000 0.2453 0.9385 1.4211 2.2909 2.9302 4.2581-0.5833 -0.6364 0.6875 1.4211 1.9375 2.9302 3.0526 4.5217-0.2333 -0.2414 1.1190 1.7925 2.3571 3.7143 3.8571 4.94740 0 1.2857 2.0000 2.7143 4.2581 4.6923 5.2353Columns 9 through 13-2.7143 -2.0000 -1.2857 0 0-2.3571 -1.7925 -1.1190 0.2414 0.2333-1.9375 -1.4211 -0.6875 0.6364 0.5833-1.4211 -0.9385 -0.2453 1.0000 1.0000-0.4400 -0.0364 0.1600 1.6000 1.63160.2632 1.9057 2.3333 2.9231 2.92310.9600 2.6000 2.9250 3.5484 3.58822.46673.0769 3.36364.0000 4.00003.4706 3.7586 3.78134.0000 4.00004.2581 4.2581 4.2581 4.2581 4.25814.6923 4.5217 4.6923 4.5217 4.69235.0000 4.9474 5.0000 4.9474 5.00005.3500 5.2353 5.3500 5.2353 5.3500Matlab程序:%作业:计算模糊控制规则表clc;clear;%偏差E的隶属函数表E = [1,0.8,0.7,0.4,0.1,0,0,0,0,0,0,0,0;0.2,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0.1,0.3,0.7,1,0.7,0.2,0,0,0,0,0,0;0,0,0,0,0.1,0.6,1,0,0,0,0,0,0;0,0,0,0,0,0,1,0.6,0.1,0,0,0,0;0,0,0,0,0,0,0.2,0.7,1,0.7,0.3,0.1,0;0,0,0,0,0,0,0,0,0.2,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0.1,0.4,0.7,0.8,1] %8*13的矩阵%偏差E变化率EC的隶属函数表EC =[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制量U的隶属函数表,与偏差变化率隶属函数相同U=[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制规则表,E的模糊分割数为8,EC的模糊分割数为7,包含最大可能的规则数为7*8=56rulelist= [1,1,1,1,2,4,4;1,1,1,1,2,4,4;2,2,2,2,4,5,5;2,2,3,4,5,6,6;2,2,3,4,5,6,6;3,3,4,6,6,6,6;4,4,6,7,7,7,7;4,4,6,7,7,7,7] %8*7的矩阵%********计算模糊控制规则表************for iii=1:13for jjj=1:13for ii=1:8for jj=1:7A_rulelist = rulelist(ii,jj); %模糊控制规则简表对应输出语言值%******计算CiA'************A = E(ii,:); %取Ai'C_A = U(A_rulelist,:); %取Ci' %*****RiA=Ai'与Ci‘对应取小的值,RiA为13*13矩阵*******for i=1:13for j=1:13if(A(i) > C_A(1,j))Ra(i,j) = C_A(1,j);elseRa(i,j) = A(i);endendendAA = zeros(1,13); %取AA=A'AA(1,iii) = 1;for i=1:13 %先取小,C'iA=Ai'。
RiAfor j=1:13if(AA(j) > Ra(j,i))A_qux(j,i) = Ra(j,i);elseA_qux(j,i) = AA(j);endendendfor i=1:13 %再取大,求并得到CiA max = A_qux(1,i);for j=1:13if(max < A_qux(j,i))max = A_qux(j,i);endendCiA(i) = max;end%********CiA计算完毕*********%*******同理计算CiB'*************B = EC(jj,:); %取B'C_B = U(A_rulelist,:); %取Cifor i=1:13 %求RiB=Bi'与Ci'取小for j=1:13if(B(1,i) > C_B(1,j))Rb(i,j) = C_B(1,j);elseRb(i,j) = B(1,i);endendendBB = zeros(1,13); %取BB=B'BB(1,jjj) = 1;for i=1:13 %先取小,CiB'=Bi'。
RiB for j=1:13if(BB(j) > Rb(j,i))B_qux(j,i) = Rb(j,i);elseB_qux(j,i) = BB(j);endendendfor i=1:13 %再取大,求并得CiB max = B_qux(1,i);for j=1:13if(max < B_qux(j,i))max = B_qux(j,i);endCiB(i) = max;end%*******计算CiB'完毕****%*******计算Ci'=CiA'交CiB'*********for i=1:13if CiA(i) > CiB(i)Ci(i) = CiB(i);elseCi(i) = CiA(i);endend%*******计算Ci'完毕************C((ii-1)*7+jj,:) = Ci; % 将Ci存到数组C中,C是56*13的数组endend%**根据式Ui=C'=C1'并C2'并……并C56',计算输出量的模糊集合** for i=1:13max = C(1,i);for j=1:56max = C(j,i);endendUi(i) = max;end%*****用重心法进行清晰化运算*********sum_fenz = 0;sum_fenm = 0;for i=1:13sum_fenz = sum_fenz + (i-7)*Ui(i);sum_fenm = sum_fenm + Ui(i);endcore = sum_fenz/sum_fenm;U_control(iii,jjj) = core;endendU_control = round(U_control.*10000)/10000; %对控制量保留小数点后两位display 输出量的模糊集合表U_control。