%常规模糊控制程序
clear all;
a=newfis('fuzzy_controller');
%建立模糊输入误差e的隶属度函数
S_E=0.5;S_EC=0.5;S_I=0.5
a=addvar(a,'input','e',[-6*S_E,6*S_E]);
a=addmf(a,'input',1,'NB','zmf',[-6*S_E,-4*S_E]);
a=addmf(a,'input',1,'NM','trimf',[-6*S_E,-4*S_E,-2*S_E]);
a=addmf(a,'input',1,'NS','trimf',[-4*S_E,-2*S_E,0]);
a=addmf(a,'input',1,'ZO','trimf',[-2*S_E,0,2*S_E]);
a=addmf(a,'input',1,'PS','trimf',[0,2*S_E,4*S_E]);
a=addmf(a,'input',1,'PM','trimf',[2*S_E,4*S_E,6*S_E]);
a=addmf(a,'input',1,'PB','smf',[4*S_E,6*S_E]);
%建立模糊输入误差ec的隶属度函数
a=addvar(a,'input','ec',[-6*S_EC,6*S_EC]);
a=addmf(a,'input',2,'NB','zmf',[-6*S_EC,-4*S_EC]);
a=addmf(a,'input',2,'NM','trimf',[-6*S_EC,-4*S_EC,-2*S_EC]);
a=addmf(a,'input',2,'NS','trimf',[-4*S_EC,-2*S_EC,0]);
a=addmf(a,'input',2,'ZO','trimf',[-2*S_EC,0,2*S_EC]);
a=addmf(a,'input',2,'PS','trimf',[0,2*S_EC,4*S_EC]);
a=addmf(a,'input',2,'PM','trimf',[2*S_EC,4*S_EC,6*S_EC]);
a=addmf(a,'input',2,'PB','smf',[4*S_EC,6*S_EC]);
%建立模糊输出I的隶属度函数
a=addvar(a,'output','kp',[-6*S_I,6*S_I]);
a=addmf(a,'output',1,'NB','zmf',[-6*S_I,-4*S_I]);
a=addmf(a,'output',1,'NM','trimf',[-6*S_I,-4*S_I,-2*S_I]);
a=addmf(a,'output',1,'NS','trimf',[-4*S_I,-2*S_I,0]);
a=addmf(a,'output',1,'ZO','trimf',[-2*S_I,0,2*S_I]);
a=addmf(a,'output',1,'PS','trimf',[0,2*S_I,4*S_I]);
a=addmf(a,'output',1,'PM','trimf',[2*S_I,4*S_I,6*S_I]);
a=addmf(a,'output',1,'PB','smf',[4*S_I,6*S_I]);
%建立模糊规则库,共49条规则
rulelist=[1 1 7 1 1;
1 2 7 1 1;
1 3 7 1 1;
1 4 6 1 1;
1 5 4 1 1;
1 6 4 1 1;
1 7 4 1 1;
2 1 7 1 1;
2 2 7 1 1;
2 3 7 1 1;
2 4 5 1 1;
2 5 4 1 1;
2 6 4 1 1;
2 7 5 1 1;
3 1 7 1 1;
3 2 7 1 1;
3 3 7 1 1;
3 4 4 1 1;
3 5 4 1 1;
3 6 5 1 1;
3 7 6 1 1;
4 1 7 1 1;
4 2 6 1 1;
4 3 5 1 1;
4 4 4 1 1;
4 5 5 1 1;
4 6 6 1 1;
4 7 7 1 1;
5 1 6 1 1;
5 2 5 1 1;
5 3 4 1 1;
5 4 4 1 1;
5 5 7 1 1;
5 6 7 1 1;
5 7 7 1 1;
6 1 5 1 1;
6 2 4 1 1;
6 3 4 1 1;
6 4 5 1 1;
6 5 7 1 1;
6 6 7 1 1;
6 7 7 1 1;
7 1 4 1 1;
7 2 4 1 1;
7 3 4 1 1;
7 4 6 1 1;
7 5 7 1 1;
7 6 7 1 1;
7 7 7 1 1];
a=addrule(a,rulelist);
%设置反模糊化函数为centriod
a=setfis(a,'DefuzzMethod','centroid');
writefis(a,'fuzzy_controller');
a=readfis('fuzzy_controller');
%获取模糊控制表
e1=[(-3:0.5:-1),(-0.9:0.1:-0.1),(-0.09:0.01:0.09),(0.1:0.1:0.9),(1:0.5:3)];
ec1=[(-3:0.5:-1),(-0.9:0.1:-0.1),(-0.09:0.01:0.09),(0.1:0.1:0.9),(1:0.5:3)];
sa1=size(e1);
sa1=sa1(2);
sb1=size(ec1);
sb1=sb1(2);
e=e1;
num=sb1;
for i=1:num-1
e=[e,e1];
end
s1=size(e);
t=1:1:s1(2);
e=e';
t=t';
signal_e=[t,e];
ec=ec1(1);
for j=2:sa1
ec=[ec,ec1(1)];
end
num=sb1;
for l=2:num
for j=1:sa1
ec=[ec,ec1(l)];
end
end
s2=size(ec)
t=1:1:s2(2);
ec=ec';
t=t';
signal_ec=[t,ec];
s=size(e1);
s1=size(ec1);
s=s(2);
s1=s1(2);
U_I=zeros(s,s1);
for i=1:1:s1
for j=1:1:s
e_1=signal_e((i-1)*s+j,2);
ec_1=signal_ec((i-1)*s+j,2);
U_I(j,i)= evalfis([e_1,ec_1],a);
end
end
初学这个方面,谁能给小弟仔细说说这个程序的意思啊