如何用matlab代码绘制三角模糊隶属度图形

时间:2014-07-28 11:44:21

标签: matlab

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');

运行代码时无法显示模糊成员资格图形。为什么?

1 个答案:

答案 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);