当前位置:首页 > 基于matlab的模糊控制器的设计与仿真
基于MATLAB的模糊控制器的设计与仿真 第5页 共11页
a=newfis('fuzzy'); f1=1;
%设置误差e与隶属度函数 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]); f2=1;
%设置误差变化率ec与隶属度函数 a=addvar(a,'input','ec',[-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]); f3=1.5;
%设置控制量u与隶属度函数 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]); %建立控制规则表 rulelist=[1 1 5 1 1; 1 2 5 1 1; 1 3 4 1 1; 1 4 4 1 1; 1 5 3 1 1;
2 1 5 1 1; 2 2 4 1 1; 2 3 4 1 1; 2 4 3 1 1; 2 5 3 1 1;
3 1 4 1 1; 3 2 4 1 1; 3 3 3 1 1; 3 4 3 1 1; 3 5 2 1 1;
基于MATLAB的模糊控制器的设计与仿真 第6页 共11页
4 1 4 1 1; 4 2 3 1 1; 4 3 3 1 1; 4 4 2 1 1; 4 5 2 1 1;
5 1 3 1 1; 5 2 3 1 1; 5 3 2 1 1; 5 4 2 1 1; 5 5 1 1 1;];
a=addrule(a,rulelist);
a1=setfis(a,'DefuzzMethod','mom');%设置去模糊化方法 writefis(a1,'fuzzf'); a2=readfis('fuzzf'); Ulist=zeros(7,7); for i=1:7 for j=1:7
e(i)=-4+i; ec(j)=-4+j;
Ulist(i,j)=evalfis([e(i),ec(j)],a2); end end
%绘制FIS系统图形 figure(1); plotfis(a2); figure(2);
plotmf(a,'input',1); figure(3);
plotmf(a,'input',2); figure(4);
plotmf(a,'output',1);
以上程序可得内部原理图如图4(a)所示,输出U的隶属度函数如图4(b)所示,输入E的隶属度函数如图4(c)所示,输入EC的隶属度函数如图4(d)所示:
基于MATLAB的模糊控制器的设计与仿真 第7页 共11页
图4(a) 内部原理图 图 4(b)输出U的隶属度函数
图4(c)输入E的隶属度函数 图4(d)输入EC的隶属度函数
由此,就得到了模糊控制器fuzzy
图 4 6.3.2 利用图形用户界面(GUI)建立模糊推理器(FIS)
在利用 Simulink图形化工具平台设计模糊控制系统模型并进行系统仿真之前 ,同样要先建立相应的模糊推理器 ,这可以通过图形用户界面(GUI)来建立。利用 GUI建立 FIS的过程如下: 1)进入FIS编辑器
在MATLAB的Command Window窗口下,输入fuzzy。此时弹出FIS编辑器,如图5所示:
图5 FIS编辑器
基于MATLAB的模糊控制器的设计与仿真 第8页 共11页
首先,确定模糊控制器的类型和结构。这里选用二输入一输出的模糊控制器。在FIS编辑窗口,选中edit——add variable——input,即可增加一个输入。
2)编辑输入、输出变量的隶属度函数
在FIS编辑器窗口,双击输入模块,在弹出的隶属度函数编辑窗口分别对输入、输出函数进行编辑。输入e的隶属度函数如图6所示:
图6 输入e的隶属度函数
3)编辑模糊控制规则
在窗口中选中edit——rules,进入控制规则编辑器。根据表1所提供的模糊控制规则在编辑器中编写规则,如图7所示:
图7 模糊控制规则
共分享92篇相关文档