[求助]生成模糊控制表问题
最近做湿度模糊控制,我用MATLAB生成了一个模糊控制表,附件为程序模糊控制表程序,我设输出U论域为{0 1 2 3 4}为什么我的控制表里没有输出论域3呢?希望会模糊控制的同学能给我解答,谢谢!输出如下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
[ 本帖最后由 xmwhit 于 2009-1-15 10:22 编辑 ] 你设的是,
u的输出:u =
0 1 0 3 3 4 4 2 2
0 1 0 3 4 4 4 2 2
0 2 0 3 4 4 4 2 2
0 2 3 4 4 4 4 2 2
0 2 3 4 4 4 4 2 2
3 2 4 3 4 2 2 2 2
3 3 4 4 2 2 2 2 2
3 3 4 4 2 2 2 2 2
4 4 4 4 2 2 2 2 2 发错了 是下面的程序:
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',); %给FIS添加新的输入变量u%
b=addmf(b,'input',1,'PB','gaussmf',); %将隶属度函数PL添加到FIS%
b=addmf(b,'input',1,'PM','gaussmf',); %将隶属度函数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',); %将隶属度函数NM添加到FIS%
b=addmf(b,'input',1,'NB','gaussmf',); %将隶属度函数NL添加到FIS%
b=addmf(b,'input',2,'PB','trimf',); %将第二个输入的隶属度函数PL添加到FIS%
b=addmf(b,'input',2,'PM','trimf',); %将第二个输入的隶属度函数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',); %将输出的隶属度函数PL添加到FIS%
b=addmf(b,'output',1,'PM','trimf',); %将输出的隶属度函数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(,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
再帮忙看看吧,谢谢了! 哪位高手解答一下,我也希望能搞懂 规则里面就没有计算到3 所以才能有这个数值
页:
[1]