matlab计算模糊控制表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab计算模糊控制表
实现程序如下:
clc; %清空命令窗口
clear; %清空工作空间
e=[1,,,,,0,0,0,0,0,0,0,0;
,,1,,,0,0,0,0,0,0,0,0;
0,,,,1,,,0,0,0,0,0,0;
0,0,0,0,,,1,0,0,0,0,0,0;
0,0,0,0,0,0,1,,,0,0,0,0;
0,0,0,0,0,0,,,1,,,,0;
0,0,0,0,0,0,0,0,,,1,,;
|
0,0,0,0,0,0,0,0,,,,,1] %误差的隶属度函数表,8*13的矩阵
eb=[1,,,0,0,0,0,0,0,0,0,0,0;
,,1,,,0,0,0,0,0,0,0,0;
0,0,,,1,,,0,0,0,0,0,0;
0,0,0,0,,,1,,,0,0,0,0;
0,0,0,0,0,0,,,1,,,0,0;
0,0,0,0,0,0,0,0,,,1,,;
0,0,0,0,0,0,0,0,0,0,,,1] %误差变化率的隶属度函数表,7*13的矩阵;
u=[1,,,0,0,0,0,0,0,0,0,0,0;
,,1,,,0,0,0,0,0,0,0,0;
0,0,,,1,,,0,0,0,0,0,0;
^
0,0,0,0,,,1,,,0,0,0,0;
0,0,0,0,0,0,,,1,,,0,0;
0,0,0,0,0,0,0,0,,,1,,;
0,0,0,0,0,0,0,0,0,0,,,1] %输出控制量u,7*13的矩阵; rulelist=[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=56条规则;for ey=1:13 % 输入变量e的13个取值:-6——6;
for eby=1:13 %输入变量eb的13个取值:-6——6;
for ex=1:8 % 输入变量e的8个语言变量NB----PB;
for ebx=1:7 % 输入变量eb的7个语言变量NB---PB; arule=rulelist(ex,ebx); %取一条规则;
C=u(arule,:);%取这条规则的C的隶属度;代表取一行A=e(ex,:);%取这条规则的A的隶属度;代表取一行
for i=1:13;
¥
for j=1:13;
if (A(i)>C(1,j));
Ra(i,j)= C(1,j);
else
Ra(i,j)=A(i);
end
end
end% 算A—C的蕴含关系;
AP=zeros(1,13);
AP(1,ey)=e(ex,ey);
!
for i=1:13;
for j=1:13;
if (AP(j)>Ra(j,i));
GDA(j,i)= Ra(j,i);
else
GDA(j,i)=AP(j);
end
end
end%求合成运算开始的取小;
for i=1:13;
max=GDA(1,i);
<
for j=1:13;
if (max max= GDA(j,i); end end CPA(i)=max; end % 合成运算取大结束;CPA算出来了; arule=rulelist(ex,ebx); %取一条规则; C=u(arule,:);%取这条规则的C的隶属度;代表取一行B=eb(ebx,:);%取这条规则的A的隶属度;代表取一行》 for i=1:13; for j=1:13; if (B(i)>C(1,j)); Rb(i,j)= C(1,j); else Rb(i,j)=B(i); end end end% 算B—C的蕴含关系; BP=zeros(1,13); 、 BP(1,eby)=eb(ebx,eby); for i=1:13; for j=1:13; if (BP(j)>Rb(j,i)); GDB(j,i)= Rb(j,i); else GDB(j,i)=BP(j); end end end%求合成运算开始的取小;for i=1:13; * max=GDB(1,i); for j=1:13; if (max max= GDB(j,i); end CPB(i)=max; end; % 合成运算取大结束;CPB算出来了; for i=1:13 if(CPA(i)>CPB(i)) ; CP(i)=CPB(i); else CP(i)=CPA(i); end end % 第一个CP1计算结束;将来C是56*13的矩阵;CB((ex-1)*7+ebx,:)=CP; end end for i=1:13; max=CB(1,i); | for j=1:56; if(max max=CB(j,i); end