发错了 是下面的程序:
clc
clear all
b=newfis('fis'); %建立新的FIS系统%
writefis(b,'fuzzy10'); %将名为fis的模糊控制系统保存到磁盘%
b=readfis('fuzzy10'); %从磁盘中读取名为fis的模糊控制系统%
b=addvar(b,'input','E',[-3 3]); %给FIS添加新的输入变量e%
b=addvar(b,'input','EC',[-3 3]); %给FIS添加新的输入变量ec%
b=addvar(b,'output','U',[0 4]); %给FIS添加新的输入变量u%
b=addmf(b,'input',1,'PB','gaussmf',[1.5 3]); %将隶属度函数PL添加到FIS%
b=addmf(b,'input',1,'PM','gaussmf',[1.399 2]); %将隶属度函数PM添加到FIS%
b=addmf(b,'input',1,'PS','trimf',[-1 1 3]); %将隶属度函数PS添加到FIS%
b=addmf(b,'input',1,'Z','trimf',[-2 0 2]); %将隶属度函数P0添加到FIS%
b=addmf(b,'input',1,'NS','trimf',[-3 -1 1]); %将隶属度函数NS添加到FIS%
b=addmf(b,'input',1,'NM','gaussmf',[1.399 -2]); %将隶属度函数NM添加到FIS%
b=addmf(b,'input',1,'NB','gaussmf',[1.5 -3]); %将隶属度函数NL添加到FIS%
b=addmf(b,'input',2,'PB','trimf',[1 3 5]); %将第二个输入的隶属度函数PL添加到FIS%
b=addmf(b,'input',2,'PM','trimf',[0 2 4]); %将第二个输入的隶属度函数PM添加到FIS%
b=addmf(b,'input',2,'PS','trimf',[-1 1 3]); %将第二个输入的隶属度函数PS添加到FIS%
b=addmf(b,'input',2,'Z','trimf',[-2 0 2]); %将第二个输入的隶属度函数0添加到FIS%
b=addmf(b,'input',2,'NS','trimf',[-3 -1 1]); %将第二个输入的隶属度函数NS添加到FIS%
b=addmf(b,'input',2,'NM','trimf',[-4 -2 0]); %将第二个输入的隶属度函数NM添加到FIS%
b=addmf(b,'input',2,'NB','trimf',[-5 -3 -1]); %将第二个输入的隶属度函数NL添加到FIS%
b=addmf(b,'output',1,'PB','gaussmf',[1.5 4]); %将输出的隶属度函数PL添加到FIS%
b=addmf(b,'output',1,'PM','trimf',[0 2 4]); %将输出的隶属度函数PM添加到FIS%
b=addmf(b,'output',1,'PS','trimf',[-1 1 3]); %将输出的隶属度函数PS添加到FIS%
b=addmf(b,'output',1,'Z','trimf',[-2 0 2]); %将输出的隶属度函数0添加到FIS%
rulelist=[1 1 1 1 1;1 2 1 1 1;1 3 1 1 1; 1 4 2 1 1; %定义模糊规则%
1 5 3 1 1;1 6 4 1 1;1 7 4 1 1; 2 1 1 1 1;
2 2 1 1 1;2 3 1 1 1;2 4 2 1 1; 2 5 3 1 1;
2 6 4 1 1;2 7 4 1 1;3 1 1 1 1; 3 2 1 1 1;
3 3 2 1 1;3 4 3 1 1;3 5 4 1 1; 3 6 4 1 1;
3 7 4 1 1;4 1 1 1 1;4 2 2 1 1; 4 3 3 1 1;
4 4 4 1 1;4 5 4 1 1;4 6 4 1 1; 4 7 4 1 1;
5 1 2 1 1;5 2 3 1 1;5 3 4 1 1; 5 4 4 1 1;
5 5 4 1 1;5 6 4 1 1;5 7 4 1 1; 6 1 4 1 1;
6 2 4 1 1;6 3 4 1 1;6 4 4 1 1; 6 5 4 1 1;
6 6 4 1 1;6 7 4 1 1;7 1 4 1 1; 7 2 4 1 1;
7 3 4 1 1;7 4 4 1 1;7 5 4 1 1; 7 6 4 1 1;
7 7 4 1 1];
b=addrule(b,rulelist); %在FIS中添加规则%
writefis(b,'fuzzy10'); %将名为fis的模糊控制系统保存到磁盘%
b=setfis(b,'defuzzmethod','mom'); %采用mom(极大平均法)进行反模糊化
showfis(b);
out=evalfis([-3 3],b)
for i=-3:3 %创建模糊矩阵%
for j=-3:3
u(i+4,j+4)=round(evalfis([i j],b));
end
end
u
注:程序运行后生成的控制表
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 1 2
0 0 0 0 1 2 4
0 0 0 1 2 4 4
0 0 1 2 4 4 4
0 0 1 2 4 4 4
再帮忙看看吧,谢谢了! |