声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2923|回复: 2

[原创]建立模糊控制规则

[复制链接]
发表于 2006-6-30 15:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
%模糊推理系统(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',[1.5,-6]);            %添加隶属度函数<br>a=addmf(a,'input',1,'NM','gaussmf',[1.18,-4]);<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',[0.35,2,5.5]);<br>a=addmf(a,'input',1,'PM','gaussmf',[1.18,4]);   <br>a=addmf(a,'input',1,'PB','gaussmf',[1.5,6]);<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',[1.5,-6]);<br>a=addmf(a,'input',2,'NM','gaussmf',[1.18,-4]);<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',[0.35,2,5.5]);<br>a=addmf(a,'input',2,'PM','gaussmf',[1.18,4]);<br>a=addmf(a,'input',2,'PB','gaussmf',[1.5,6]);<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',[1.5,-6]);<br>a=addmf(a,'output',1,'NM','gaussmf',[1.18,-4]);<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',[0.35,2,5.5]);<br>a=addmf(a,'output',1,'PM','gaussmf',[1.18,4]);<br>a=addmf(a,'output',1,'PB','gaussmf',[1.5,6]);<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;                             %隶属度规则修正因子,[0,1]<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)&gt;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,:)=[i,j,rr(i,j)];<br>        k=k+1;<br>    end<br>end<br>[r,s]=size(r1);<br>r2=ones(r,2);<br>rulelist=[r1,r2];  %规则矩阵,m+n+2列,m列输入,n列输出.m+n+1列为规则权值,m+n+2列操作符类型<br>a=addrule(a,rulelist);                   %在FIS中添加规则<br>%----------------------------------------------------------------------------------%
[此贴子已经被作者于2006-6-30 15:31:37编辑过]

点评

赞成: 5.0
赞成: 5
  发表于 2014-3-27 18:43

评分

1

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2006-6-30 15:34 | 显示全部楼层
<P>注意:6.1版本和当前的6.5版本默认项不同。6.1版本有系统默认的3个隶属度函数,要是不需要需将其删除。而6.5版本的MATLAB则没有。大家使用时需注意。</P>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 17:07 , Processed in 0.144084 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表