[原创]建立模糊控制规则
%模糊推理系统(FIS)<br>a=newfis('Simple'); %建立模糊推理系统<br>a=addvar(a,'input','e',[-6 6]); %添加误差变量 <br>% a=rmmf(a,'input',1,'mf',1); %[注意:]删除默认的隶属度函数(matlab6.0版本需要此项,6.5版本则不需要)<br>% a=rmmf(a,'input',1,'mf',1);<br>% a=rmmf(a,'input',1,'mf',1);<br>a=addmf(a,'input',1,'NB','gaussmf',); %添加隶属度函数<br>a=addmf(a,'input',1,'NM','gaussmf',);<br>a=addmf(a,'input',1,'NS','trimf',[-5.5,-2,-0.35]);<br>a=addmf(a,'input',1,'ZR','trimf',[-2,0,2]);<br>a=addmf(a,'input',1,'PS','trimf',);<br>a=addmf(a,'input',1,'PM','gaussmf',); <br>a=addmf(a,'input',1,'PB','gaussmf',);<br>%----------------------------------------------------------------------------------%<br>a=addvar(a,'input','de',[-6 6]);<br>% a=rmmf(a,'input',2,'mf',1);<br>% a=rmmf(a,'input',2,'mf',1);<br>% a=rmmf(a,'input',2,'mf',1);<br>a=addmf(a,'input',2,'NB','gaussmf',);<br>a=addmf(a,'input',2,'NM','gaussmf',);<br>a=addmf(a,'input',2,'NS','trimf',[-5.5,-2,-0.35]);<br>a=addmf(a,'input',2,'ZR','trimf',[-2,0,2]);<br>a=addmf(a,'input',2,'PS','trimf',);<br>a=addmf(a,'input',2,'PM','gaussmf',);<br>a=addmf(a,'input',2,'PB','gaussmf',);<br>%-----------------------------------------------------------------------------------%<br>a=addvar(a,'output','u',[-6 6]);<br>% a=rmmf(a,'output',1,'mf',1);<br>% a=rmmf(a,'output',1,'mf',1);<br>% a=rmmf(a,'output',1,'mf',1);<br>a=addmf(a,'output',1,'NB','gaussmf',);<br>a=addmf(a,'output',1,'NM','gaussmf',);<br>a=addmf(a,'output',1,'NS','trimf',[-5.5,-2,-0.35]);<br>a=addmf(a,'output',1,'ZR','trimf',[-2,0,2]);<br>a=addmf(a,'output',1,'PS','trimf',);<br>a=addmf(a,'output',1,'PM','gaussmf',);<br>a=addmf(a,'output',1,'PB','gaussmf',);<br>%-----------------------------------------------------------------------------------%<br>%显示隶属度函数<br>figure(1) <br>subplot(3,1,1)<br>plotmf(a,'input',1)<br>ylabel('误差隶属度');<br>subplot(3,1,2)<br>plotmf(a,'input',2)<br>ylabel('误差率隶属度');<br>subplot(3,1,3)<br>plotmf(a,'output',1)<br>ylabel('输出隶属度');<br>%-----------------------------------------------------------------------------------%<br>%建立模糊控制规则<br>aa=0.5; %隶属度规则修正因子,<br>for i=1:7<br> for j=1:7<br> rr(i,j)=ceil(((i-4)*(1-aa)+(j-4)*aa)*(-1))+4;<br> if rr(i,j)>7<br> rr(i,j)=7;<br> end<br> end<br>end %模糊控制规则<br> <br>r1=zeros(prod(size(rr)),3); <br>k=1;<br>for i=1:size(rr,1)<br> for j=1:size(rr,2)<br> r1(k,:)=;<br> k=k+1;<br> end<br>end<br>=size(r1);<br>r2=ones(r,2);<br>rulelist=;%规则矩阵,m+n+2列,m列输入,n列输出.m+n+1列为规则权值,m+n+2列操作符类型<br>a=addrule(a,rulelist); %在FIS中添加规则<br>%----------------------------------------------------------------------------------%[此贴子已经被作者于2006-6-30 15:31:37编辑过]
<P>注意:6.1版本和当前的6.5版本默认项不同。6.1版本有系统默认的3个隶属度函数,要是不需要需将其删除。而6.5版本的MATLAB则没有。大家使用时需注意。</P>
页:
[1]