fisMat=newfis('ex5_2');
fisMat=addvar(fisMat,'output','service',[0 10]);
fisMat=addmf(fisMat,'ouput',1,'low','trapmf',[0 0 5 15]);
fisMat=addmf(fisMat,'ouput',1,'middle','trimf',[5 15 25]);
fisMat=addmf(fisMat,'ouput',1,'high','trapmf',[15 25 30 30]);
rulelist=[1 1 1 1;2 2 1 1];
fisMat=addrule(fisMat,rulelist);
subplot(3,1,2);plotmf(fisMat,'output',1);xlabel('tip');ylabel('output');
运行代码时无法显示模糊成员资格图形。为什么?
答案 0 :(得分:0)
在输入范围中指定[0,10],但每个MF的实际范围为[0,30]。您还需要提供一些输入。如果您只输出输出,您将收到以下消息:
No Input Variable yet
您定义的规则也表明您有1个输入:
rulelist=[1 1 1 1;2 2 1 1];
但你还没有指定它。
以下代码效果很好:
FISX=newfis('new');
FISX=addvar(FISX,'input','d',[0 1]);
FISX=addmf(FISX,'input',1,'G','gaussmf',[0.05 0] );
FISX=addmf(FISX,'input',1,'N','gaussmf',[0.15 0.25]);
FISX=addmf(FISX,'input',1,'F','gauss2mf', [0.15 0.6 0.1 1.1]);
plotmf(FISX,'input',1)
FISX=addvar(FISX,'output','F',[-1 1]);
FISX=addmf(FISX,'output',1,'F','trimf',[0 1 2]);
FISX=addmf(FISX,'output',1,'S','trimf',[-1 0 1]);
FISX=addmf(FISX,'output',1,'B','trimf',[-2 -1 0]);
plotmf(FISX,'output',1)
XruleList=[
1 1 1 1
2 2 1 1
3 3 1 1
];
FISX=addrule(FISX,XruleList);