当前位置:编程学习 > Matlab >>

你好,请问matlab程序设计不用simulink应该怎么调用模糊控制器? 毕设,急需!!!在此先谢过了。。。

close all clear all a=newfis('fuzzf'); f1=1; a=addvar(a,'input','e',[-3*f1,3*f1]); a=addmf(a,'input',1,'NB','zmf',[-3*f1,-1*f1]); a=addmf(a,'input',1,'NM','trimf',[-3*f1,-2*f1,0]); a=addmf(a,'input',1,'NS','trimf',[-3*f1,-1*f1,1*f1]); a=addmf(a,'input',1,'Z','trimf',[-2*f1,0,2*f1]); a=addmf(a,'input',1,'PS','trimf',[-1*f1,1*f1,3*f1]); a=addmf(a,'input',1,'PM','trimf',[0,2*f1,3*f1]); a=addmf(a,'input',1,'PB','smf',[1*f1,3*f1]); f2=1; a=addvar(a,'input','ec',[-3*f2,3*f2]); a=addmf(a,'input',2,'NB','zmf',[-3*f2,-1*f2]); a=addmf(a,'input',2,'NM','trimf',[-3*f2,-2*f2,0]); a=addmf(a,'input',2,'NS','trimf',[-3*f2,-1*f2,1*f2]); a=addmf(a,'input',2,'Z','trimf',[-2*f2,0,2*f2]); a=addmf(a,'input',2,'PS','trimf',[-1*f2,1*f2,3*f2]); a=addmf(a,'input',2,'PM','trimf',[0,2*f2,3*f2]); a=addmf(a,'input',2,'PB','smf',[1*f2,3*f2]); f3=1.5; a=addvar(a,'output','u',[-3*f3,3*f3]); a=addmf(a,'output',1,'NB','zmf',[-3*f3,-1*f3]); a=addmf(a,'output',1,'NM','trimf',[-3*f3,-2*f3,0]); a=addmf(a,'output',1,'NS','trimf',[-3*f3,-1*f3,1*f3]); a=addmf(a,'output',1,'Z','trimf',[-2*f3,0,2*f3]); a=addmf(a,'output',1,'PS','trimf',[-1*f3,1*f3,3*f3]); a=addmf(a,'output',1,'PM','trimf',[0,2*f3,3*f3]); a=addmf(a,'output',1,'PB','smf',[1*f3,3*f3]); rulelist=[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 3 1 1; 1 7 4 1 1; 2 1 1 1 1; 2 2 2 1 1; 2 3 2 1 1; 2 4 3 1 1; 2 5 3 1 1; 2 6 4 1 1; 2 7 5 1 1; 3 1 2 1 1; 3 2 2 1 1; 3 3 3 1 1; 3 4 3 1 1; 3 5 4 1 1; 3 6 5 1 1; 3 7 5 1 1; 4 1 2 1 1; 4 2 3 1 1; 4 3 3 1 1; 4 4 4 1 1; 4 5 5 1 1; 4 6 5 1 1; 4 7 6 1 1; 5 1 3 1 1; 5 2 3 1 1; 5 3 4 1 1; 5 4 5 1 1; 5 5 5 1 1; 5 6 6 1 1; 5 7 6 1 1; 6 1 3 1 1; 6 2 4 1 1; 6 3 5 1 1; 6 4 5 1 1; 6 5 6 1 1; 6 6 6 1 1; 6 7 7 1 1; 7 1 4 1 1; 7 2 5 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]; a=addrule(a,rulelist); a1=setfis(a,'DefuzzMethod','mom');%Defuzzy 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 figure(1); plotfis(a2); figure(2); plotmf(a,'input',1); figure(3); plotmf(a,'input',2); figure(4); plotmf(a,'output',1); 规则中后面的1 1,以及以后是什么意思呀?看的不是很懂?不知能否抽空帮帮忙。甚是感激。
答案:不用Simulink怎么调用?不知道你的毕业设计怎么会有这种什么要求。如果你说的是要对这个模糊推理系统进行编辑的话,你这个系统可以输入fuzzy('fuzzf') 
规则后面的rulelist=[1 1 1 1 1,第一个数字就是是第一个输入量所取的模糊子集的排序,第二个数字代表取二个输入量中所取的模糊子集的排序,第三个数字代表输出量中所取的模糊子集的排序,第四个数字代表这条规则被综合时的权重是1,第五个数字1代表两个输入量之间是“且”的关系,比如这里1 1 1 1 1的意思就是,如果输入量1属于其第1个模糊子集,且输入量2属于其第1个模糊子集,那么输出量1就属于其第一个模糊子集,权重为1。
a=addrule(a,rulelist);意思是将以上的规则写入模糊推理系统a中。
别的我就不一一解释了,建议你找本书看看,我推荐《模糊控制及其PID仿真》,石辛民著

上一个:在用matlab求离散序列的傅立叶变化时出现了如下错误:Warning: Divide by zero. > In czt at 63。程序如下
下一个:matlab程序设计与应用课后答案 也给我发份儿吧 谢谢啦 294834786 @qq.com

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,