• MATLAB模糊逻辑(2)


    6.2  模糊推理结构FIS

    6.2.1  不使用数据聚类方法从数据生成FIS结构

    函数  genfis1

    格式  fismat = genfis1(data)

          fismat = genfis1(data,numMFs,inmftype, outmftype)

    说明  genfis1为anfis训练生成一个Sugeno型作为初始条件的FIS结构(初始隶属函数)。genfis1(data,numMFs,inmftype, outmftype)使用对数据的网格分割方法,从训练数据集生成一个FIS结构。Data是训练数据矩阵,除最后一列表示单一输出数据外,它的其它各列表示输入数据。NumMFs是一个向量,它的坐标指定与每一输入相关的隶属函数的数量。如果你想使用每个输入相关的相同数量的隶属函数,那么只须使numMFs成为一个数就足够了。Inmftype是一个字符串数组,它的每行指定与每个输入相关的隶属函数类型。outmftype是一个字符串数组,它的指定与每个输出相关的隶属函数类型

    6-19

    >>data = [rand(10,1) 10*rand(10,1)-5 rand(10,1)];

    >>numMFs = [3 7];

    >>mfType = str2mat('pimf','trimf');

    >>fismat = genfis1(data,numMFs,mfType);

    >> [x,mf] = plotmf(fismat,'input',1);

    >>subplot(2,1,1), plot(x,mf);

    >>xlabel('input 1 (pimf)');

    >>[x,mf] = plotmf(fismat,'input',2);

    >>subplot(2,1,2), plot(x,mf);

    >>xlabel('input 2 (trimf)');

    结果为图6-21

     

    图6-21

     

    6.2.2  使用减法聚类方法从数椐生成FIS结构

    函数  genfis2

    格式  fismat = genfis2(Xin,Xout,radii)

          fismat = genfis2(Xin,Xout,radii,xBounds)

          fismat = genfis2(Xin,Xout,radii,xBounds,options) 

    说明  Xin是一个矩阵,它的每一行包含一个数据点的输入值;Xout是一个矩阵,它的每一行包含一个数据点的输出值;randi是一个向量,它指定一个聚类中心在一个数据维上作用的范围,这里假定数据位于一个单位超立方体内:xBounds是一个2×N可选矩阵,它用于指定如何将Xin和Xout中的数据映射到一个超立方体内,这里是数据的维数(行数); options是一个可选向量,它指定的值用于覆盖算法参数的缺省值。

    例6-20

    fismat = genfis2(Xin,Xout,0.5)

    这是使用此函数所需的最小变量数。这里对所有数据维指定0.5的作用范围。

    fismat = genfis2(Xin,Xout,[0.5 0.25 0.3])

    这里假定组合的维数是3。假设Xin有两维、Xout有一维,那么,0.5和0.25是Xin数据维中每一维的作用范围,0.3是Xout数据维的作用范围。

    fismat = genfis2(Xin,Xout,0.5,[-10 -5 0; 10 5 20])

    这里指定了如何将Xin和Xout中的数据规范化为[0  1]区间中的值来进行处理。假设Xin有两维、Xout有一维,那么Xin第一列中的数据是从[-10  +10]比例变换后的值,Xin第二列中的数据是从[-5  +5]比例变换后的值,Xout中的数据是从[0  20]比例变换后的值。

    6.2.3  生成一个FIS输出曲面

    函数  gensurf

    格式  gensurf(fis)   %使用前两个输入和第一个输出来生成给定模糊推理系统(fis)的输出曲面

         gensurf(fis,inputs,output)   %使用分别由向量input和标量output给定的输入(一个或两个)和输出(只允许一个)来生成一个图形。

         gensurf(fis,inputs,output,grids)   %指定X(第一、水平)和Y(第二、垂直)方向的网格数。如果是二元向量,XY方向上的网格可以独立设置。

         gensurf(fis,inputs,output,grids,refinput)   %用于多于两个的输入,refinput向量的长度与输入相同:

    ·将对应于要显示的输入的refinput项,设置为NaN;

    ·对其它输入的固定值设置为双精度实标量。

         [x,y,z]=gensurf()   %返回定义输出曲面的变量并且删除自动绘图。

    6-21

    >>a = readfis('tipper');

    >>gensurf(a) 

    结果为图6-22

     

    图6-22

     

    6.2.4  将mamdan型FIS转换为Sugeno FIS

    函数  mam2sug

    格式  sug_fis=mam2sug(mam_fis)

    说明  该函数将一个mamdani型FIS结构(不必是单输出)mam_fis转化为一个sugeno型结构sug_fis。返回的sugeno型系统具有常值输出隶属度函数。这些常值由原来mamdani型系统的后件的隶属度函数的面积中心法来确定。前件仍保持不变。

    6.2.5  完成模糊推理计算

    函数  evalfis

    格式  output= evalfis(input,fismat)

          output= evalfis(input,fismat, numPts)

          [output, IRR, ORR, ARR]= evalfis(input,fismat)

    [output, IRR, ORR, ARR]= evalfis(input,fismat, numPts) 

    说明  input:指定输入值的一个数或一个矩阵,如果输入是一个M×N矩阵,其中N是输入变量数,那么evalfis使用 input的每一行作为一个输入向量,并且为变量output返回M×L矩阵,该矩阵每一行是一个向量并且L是输出变量数;

    fismat:要计算的一个FIS结构;

    numPts:一个可选变量,它表示在输入或输出范围内的采样点数,在这些点上计算隶属函数,如果 不使用此变量,就使用101点的缺省值。

    Evalfis的值域如下:

    Output:大小为ML的输出矩阵,这里M表示前面指定的输入值的数量, L表示FIS的输出变量数。

    evalfis的可选值域变量只有当input是一个行向量时才计算这些可选值域变量是:

    IRR:通过隶属函数计算的输入变量的结果,这是一个大小为numRulesN的矩阵,这里numRules是规则条数,N是输入变量数。

    ORR:通过隶属函数计算的输出变量的结果,这是一个大小为numPtsnumRulesL的矩阵,这里numRules是规则条数,L是输出变量数,此矩阵的第一组numRules列,对应于第一个输出,第二组numRules 对应于第二个输出,依次类推。

    ARR:对每个输出,在输出值域中,numPts处采样合成值的numPtsL矩阵,当只有一个值域变量调用时,该函数使用由结构fismat指定的模糊推理系统,由标量或矩阵inout指定的输入值计算输出向量output。

    6-22

    >>fismat = readfis('tipper');

    >>out = evalfis([2 1; 4 9],fismat)

    结果为

    out =

         7.0169

        19.6810

    6.2.6  模糊c均值聚类

    函数  fcm

    格式  [center,U,obj_fcn] = fcm(data,cluster_n) 

    说明  对给定的数据集应用模糊c均值聚类方法进行聚类

    data:要聚类的数据集,每行是一个采样数据点;

    cluster_n:聚类中心的个数(大于1

    center:迭代后得到的聚类中心的矩阵,这里每行给出聚类中心的坐标;

    U:得到的所有点对聚类中心的模糊分类矩阵或隶属度函数矩阵;

    Obj_fcn:迭代过程中,目标函数的值;

    fcm(data,cluster_n,options)使用可选的变量options控制聚类参数。包括停止准则,和/或设置迭代信息显示:

    options(1):分类矩阵U的指数,缺省值是2.0;

    options(2):最大迭代次数,缺省值是100

    options(3):最小改进量,即迭代停止的误差准则,缺省值是1e-5;

    option(4):迭代过程中显示信息,缺省值是1

    如果任意一项为NaN,这些选项就使用缺省值;当达到最大迭代次数时,或目标函数两次连续迭代的改进量小于指定的最小改进量,即满足停止误差准则时,聚类过程结束。

    6-23

    >>data = rand(100, 2);

    >>[center,U,obj_fcn] = fcm(data, 2);

    >>plot(data(:,1), data(:,2),'o');

    >>maxU = max(U);

    >>index1 = find(U(1,:) == maxU);

    >>index2 = find(U(2, :) == maxU);

    >>line(data(index1,1), data(index1, 2), 'linestyle', 'none', 'marker', '*', 'color', 'g');

    >>line(data(index2,1), data(index2, 2), 'linestyle', 'none', 'marker', '*', 'color', 'r');

    结果为图6-23

     

     

    6.2.7  模糊均值和减法聚类

    函数  findcluster

    格式  findcluster

        findcluster('file.dat')

    说明  findcluster产生一个GUI上的Method下的下拉式标签,可以实现模糊C均值(fcm)或模糊减法聚类(subtractiv),使用Load Data按钮输入数据,刚进入GUI时,对每种方法的选项都设置为缺省值。

    此工具使用多维数据集,但只显示这些维数中的两维。使用X-axis和Y-axis下的下拉式标签选择你想观察的数据维。例如你有一个五维数据集,按照出现在数据集中的顺序,此工具将数据标记为data_1,data_2,data_3,data_4,data_5, Start将完成聚类,Save Centre将保存聚类中心。

    当使用数据集file.data时,findcluster(file.dat)自动装入数据集,并且只绘制数据集中的前两维。产生GUI后,你仍可以选择要聚类数据的那两维。

    例6-24

    >>findcluster('clusterdemo.dat')

    结果为图6-24

    6.2.8  绘制一个FIS

    函数  plotfis

    格式  plotfis(fismat)

    说明  此函数显示由fismat指定的一个FIS的高层方框图,输入和它们的隶属函数出现在结构特征图的左边,同时输出和它们的隶属函数出现在结构特征图的右边。 

    6-25

    >>a = readfis('tipper');

    >>plotfis(a)

    结果为图6-25

               

                        图6-24                                                          6-25

     

    6.2.9  绘制给定变量的所有隶属的曲线

    函数  plotmf

    格式  plotmf(fismat,varType,varIndex) 

    说明  此函数绘制与给定变量相关的称为fismat的FIS中的所有隶属函数曲线,变量的类型和索引分别由varType ('input' 'output')varIndex给出。此函数也可以与MATLAB函数subplot一起使用。

    6-26

    >>a = readfis('tipper');

    >>plotmf(a,'input',1)

    结果为图6-26

    6-26

     

    6.2.10  从磁盘装入一个FIS

    函数  readfis

    格式  fismat = readfis('filename')

    说明  从磁盘上的一个.fis文件(由filename命名)读出一个模糊推理系统,并将产生的FIS装入当前的工作空间中。Fismat = readfis不带输入变量,即没有指定文件名时,使用uigetfile命令打开一个对话框,提示用户指定文件的名称和目录位置。

    6-27

    >>fismat = readfis('tipper');

    >>getfis(fismat)

    返回结果

    getfis(fismat)

          Name      = tipper

          Type      = mamdani

          NumInputs = 2

          InLabels  = 

                service

                food

          NumOutputs = 1

          OutLabels = 

                tip

          NumRules = 3

          AndMethod = min

          OrMethod = max

          ImpMethod = min

          AggMethod = max

          DefuzzMethod = centroid

    ans =

    tipper

    6.2.11  FIS中删除某一隶属函数

    函数  rmmf

    格式  fis = rmmf(fis,'varType',varIndex,'mf',mfIndex) 

    说明  从与工作空间FIS结构fis相关的模糊推理系统中删除变量类型为varType,索引为varIndex的隶属函数mfIndex。

    字符串vartype必须是'input' 'output'

    varIndex是表示变量索引的一个整数,此索引表示列出变量的顺序;

    变量'mf '是表示隶属函数的一个字符串;

    mfIndex是表示隶属函数索引的一个整数,此索引表示列出隶属函数的顺序。

    6-28

    >>a = newfis('mysys');

    >>a = addvar(a,'input','temperature',[0 100]);

    >>a = addmf(a,'input',1,'cold','trimf',[0 30 60]);

    >>getfis(a,'input',1)

    返回结果

           Name =     temperature

          NumMFs =   1

          MFLabels = 

                cold

          Range =    [0 100]

    ans =

         [ ]

    >>b = rmmf(a,'input',1,'mf',1);

    >>getfis(b,'input',1)

    返回

    Name =     temperature

          NumMFs =   0

          MFLabels = 

          Range =    [0 100]

    ans =

         [ ]

    6.2.12  FIS中删除变量

    函数  rmvar

    格式  [fis2,errorStr] = rmvar(fis,'varType',varIndex) 

    fis2 = rmvar(fis,'varType',varIndex)

    说明  fis2 = rmvar(fis,'varType',varIndex))从与工作空间FIS结构fis相关的模糊推理系统中删除索引为varIndex的语言变量mfIndex,字符串vartype必须是'input' 'output'

    varIndex是表示变量索引的一个整数,此索引表示列出变量的顺序。

    [fis2,errorStr] = rmvar(fis,'varType',varIndex)   将任何错误信息返回到字符串errorStr。

    此命令自动更新规则列表以保证列表尺寸与当前变量数保持一致,在删除语言变量之前,你必须从FIS删除任何包含要删除变量的规则,你无法删除在规则列表中正在使用的模糊变量。

    6-29

    >>a = newfis('mysys');

    >>a = addvar(a,'input','temperature',[0 100]);

    >>getfis(a)

    返回:

    Name      = mysys

          Type      = mamdani

          NumInputs = 1

          InLabels  = 

                temperature

          NumOutputs = 0

          OutLabels = 

          NumRules = 0

          AndMethod = min

          OrMethod = max

          ImpMethod = min

          AggMethod = max

          DefuzzMethod = centroid

    ans =

    mysys

    >>b = rmvar(a,'input',1);

    >>getfis(b)

    返回:

          Name      = mysys

          Type      = mamdani

          NumInputs = 0

          InLabels  = 

          NumOutputs = 0

          OutLabels = 

          NumRules = 0

          AndMethod = min

          OrMethod = max

          ImpMethod = min

          AggMethod = max

          DefuzzMethod = centroid

    ans =

    mysys

    6.2.13  设置模糊系统属性

    函数  setfis

    格式  a = setfis(a,'fispropname','newfisprop')

          a = setfis(a,'vartype',varindex,'varpropname','newvarprop')

          a = setfis(a,'vartype',varindex,'mf',mfindex, 'mfpropname','newmfprop'); 

    说明  可以使用三个、五个或七个输入变量调用setfis命令,使用几个输入变量取决于是否设置整个结构的一个属性,是否设置属于该结构的一个特定变量,还是是否设置属于这些变量之一的一个特定隶属函数。这些变量是:

    a:工作空间中FIS的一个变量名称,

    vartype:表示变量类型的一个字符串:input或output;

    varindex:输入或输出变量的索引;

    mf:调用setfis时,七个变量中的第四个变量所用的字符串,用语指明此变量是一个隶属函数;

    mfindex:属于所选变量的隶属函数的索引;

    fispropname:表示你要设置FIS域属性的一个字符串:name,type,andmethod, ormethod, impmethod,aggmethod,defuzzmethod;

    newfisprop:你要设置的FIS的属性或方法名称的一个字符串;

    varpropname:你要设置的变量域名称的一个字符串:name或range;

    newvarprop:你要设置的变量名称的一个字符串(对name),或变量范围的一个数组(对range),mfpropname—你要设置的隶属函数名称的一个字符串:name,type或params;

    newmfprop:你要设置的隶属函数名称或类型域的一个字符串(对name或type)或者是参数范围的一个数组(对params)。

    6-30  使用三个变量调用:

    >>a = readfis('tipper');

    >>a2 = setfis(a, 'name', 'eating');

    >>getfis(a2, 'name');

    结果为:

    out =

    eating

    如果使用五个变量,setfis将更新两个变量属性:

    >>a2 = setfis(a,'input',1,'name','help');

    >>getfis(a2,'input',1,'name')

    结果为:

    ans =

        help

    如果使用七个变量,setfis将更新七个隶属函数的任意属性:

    >>a2 = setfis(a,'input',1,'mf',2,'name','wretched');

    >>getfis(a2,'input',1,'mf',2,'name')

    结果为:

    ans =

    wretched

    6.2.14  以分行形式显示FIS结构的所有属性

    函数  showfis

    格式  showfis(fismat) 

    说明  以分行方式显示MATLAB工作空间FIS变量fismat,允许你查看结构的每个域的意义和内容。

    6-31

    >>a = readfis('tipper');

    >>showfis(a)

    返回:

    1.  Name             tipper

    2.  Type             mamdani

    3.  Inputs/Outputs   [2 1]

    4.  NumInputMFs      [3 2]

    5.  NumOutputMFs     3

    6.  NumRules         3

    7.  AndMethod        min

    8.  OrMethod         max

    9.  ImpMethod        min

    10. AggMethod        max

    11. DefuzzMethod     centroid

    12. InLabels         service

    13.                  food   

    14. OutLabels        tip

    15. InRange          [0 10]

    16.                  [0 10]

    17. OutRange         [0 30]

    18. InMFLabels       poor     

    19.                  good     

    20.                  excellent

    21.                  rancid   

    22.                  delicious

    23. OutMFLabels      cheap   

    24.                  average 

    25.                  generous

    26. InMFTypes        gaussmf

    27.                  gaussmf

    28.                  gaussmf

    29.                  trapmf 

    30.                  trapmf 

    31. OutMFTypes       trimf

    32.                  trimf

    33.                  trimf

    34. InMFParams       [1.5 0 0 0] 

    35.                  [1.5 5 0 0] 

    36.                  [1.5 10 0 0]

    37.                  [0 0 1 3]   

    38.                  [7 9 10 10] 

    39. OutMFParams      [0 5 10 0]  

    40.                  [10 15 20 0]

    41.                  [20 25 30 0]

    42. Rule Antecedent  [1 1]

    43.                  [2 0]

    44.                  [3 2]

    42. Rule Consequent  1

    43.                  2

    44.                  3

    42. Rule Weigth      1

    43.                  1

    44.                  1

    42. Rule Connection  2

    43.                  1

    44.                  2

    6.2.15  完成模糊运算

    函数  fuzarith

    格式  C = fuzarith(X, A, B, operator)

    说明  使用区间算法,C = fuzarith(X, A, B, operator)返回一个模糊集C作为结果,该算法使用由字符串operator表示的函数,并在采样凸模糊集AB上完成二进制运算;元素AB由采样值域变量X的凸函数产生;

    ABX是相同维数的向量;

    operator是下列串之一:'sum', 'sub', 'prod', and 'div'

    该函数返回的模糊集C是一个与X具有相同长度的列向量

    6-32

    >>point_n = 101;% this determines MF's resolution

    >>min_x = -20; max_x = 20;% universe is [min_x, max_x]

    >>x = linspace(min_x, max_x, point_n)';

    >>A = trapmf(x, [-10 -2 1 3]);% trapezoidal fuzzy set A

    >>B = gaussmf(x, [2 5]);% Gaussian fuzzy set B

    >>C1 = fuzarith(x, A, B, 'sum');

    >>subplot(2,1,1);

    >>plot(x, A, 'b--', x, B, 'm:', x, C1, 'c');

    >>title('fuzzy addition A+B');

    >>C2 = fuzarith(x, A, B, 'sub');

    >>subplot(2,1,2);

    >>plot(x, A, 'b--', x, B, 'm:', x, C2, 'c');

    >>title('fuzzy subtraction A-B');

    >>C3 = fuzarith(x, A, B, 'prod');

    结果为图6-27

     

                          图6-27

     

    6.2.16  解析模糊规则

    函数  parsrule

    格式  fis2 = parsrule(fis,txtRuleList)

          fis2 = parsrule(fis,txtRuleList,ruleFormat)

          fis2 = parsrule(fis,txtRuleList,ruleFormat,lang) 

    说明  此函数为MATLAB工作空间FIS变量fis解析定义规则(txtRuleList)的文本,并且返回添加了相应规则列表的一个FIS结构。如果原始输入FIS结构fis有任意初始规则,他们将由新结构fis2替换。本函数支持三种不同的规则格式(由ruleFormat指定'verbose' (语言型)'symbolic' (符号型)'indexed' (索引型)。缺省格式是'verbose' (语言型)。当使用可选语言变量lang时,规则以语言型格式进行解析,并采用语言变量lang中指定的关键字。语言必须是'english''francais'或 'deutsch'。英语关键字是ifthenisANDORNOT

    6-33

    >>a = readfis('tipper');

    >>ruleTxt = 'if service is poor then tip is generous';

    >>a2 = parsrule(a,ruleTxt,'verbose');

    >>showrule(a2)

    结果为

    ans =

         1. If (service is poor) then (tip is generous) (1)

    6.2.17  规则编辑器和语法编辑器

    函数  ruleedit

    格式  ruleedit('a')

          ruleedit(a)

    说明  当使用ruleedit('a')调用规则编辑器时,可用于修改存储在文件a.fis中的一个FIS结构的规则。它也可用于检查模糊推理系统使用的规则。为使用编辑器创建规则,你必须首先用FIS编辑器定义要使用的所有输入输出变量,你可以使用列表框和检查框选择输入、输出变量,连接操作和权重来创建新规则。如图所示,用ruleedit('tank')打开规则编辑器并装入tank.fis中存储的所有规则。

     

                        图6-28

     

    菜单项:在规则编辑器GUI上,有一个菜单棒允许你打开相关的GUI工具、打开和保存系统等。File菜单与FIS编辑器上的File菜单功能相同。

    ·Edit菜单项包括:

    Undo  用于恢复最近的改变;

    ·View菜单项包括:

    Edit FIS properties…    调用FIS编辑器;

    Edit membership functions…   调用隶属度函数编辑器;

    Edit rules…    调用规则编辑器;

    View surface…   调用曲面观察器。

    ·Options 菜单项包括:

    Language   用于选择语言:English、Deutsch和Francais;

    Format     用于选择格式

    ·Verbose    使用单词“if”、“then”、“AND”、“OR”等创建实际语句。

    ·Symbolic   用某些符号代替Verbose模式中使用的单词。例如:“if A AND

    B then C”成为“A&B=>C”。

    ·indexed    表示规则如何在FIS结构中存储。

    6.2.18  规则观察器和模糊推理框图

    函数  ruleview

    格式  ruleview('a')

    说明  使用ruleview('a') 调用规则观察器时,将绘制在存储文件a.fis中的一个FIS的模糊推理框图。它用于观察从开始到结束整个蕴含过程。你可以移动对应输入的指示线,然后观察系统重新调节并计算新的输出。如图6-29ruleview('tank' )

     

                        图6-29

    菜单项:在规则编辑器GUI上,有一个菜单棒允许你打开相关的GUI工具、打开和保存系统,等等。File菜单与FIS编辑器上的File菜单功能相同。

    ·View菜单项包括:

    Edit FIS properties…    调用FIS编辑器;

    Edit membership functions…   调用隶属度函数编辑器;

    Edit rules…    调用规则编辑器;

    View surface…   调用曲面观察器。

    ·Options 菜单项包括:

    Rules display format   用于选择显示规则的格式。如果单击模糊推理方框图左边的规则序号,与该序号相关的规则出现在规则观察器底部的状态棒中。

     6.2.19  保存FIS到磁盘上

    函数  writefis

    格式  writefis(fismat)

           writefis(fismat,'filename')

           writefis(fismat,'filename','dialog')

    说明  writefis将一个MATLAB工作空间FIS结构fismat用一个.fis文件形式保存到磁盘上;

    writefis(fismat)产生一个对话框让用户输入文件的名称和存放文件的目录;

    writefis(fismat,'filename')将对应于FIS结构fismat的一个.fis文件写到一个称为filename.fis的磁盘文件中,不使用对话框该文件被保存在当前目录中;

    writefis(fismat,'filename','dialog')创建一个带有提供的缺省名为filename.fis的对话框;

    若扩展名不存在,则只为filename添加.fis扩展名。

    6-34

    >>a = newfis('tipper');

    >>a = addvar(a,'input','service',[0 10]);

    >>a = addmf(a,'input',1,'poor','gaussmf',[1.5 0]);

    >>a = addmf(a,'input',1,'good','gaussmf',[1.5 5]);

    >>a = addmf(a,'input',1,'excellent','gaussmf',[1.5 10]);

    >>writefis(a,'my_file') 

    结果为  ans =

            my_file

    6.2.20  显示FIS的规则

    函数  showrule

    格式  showrule(fis)

          showrule(fis,indexList)

          showrule(fis,indexList,format)

          showrule(fis,indexList,format,Lang)

    说明  此命令用于显示与给定系统相关的规则。

    fis是必须提供的变量,这是一个FIS结构在MATLAB工作空间中的变量名;

    indexList是你要显示的规则向量(可选项);

    format是一个表示返回规则格式的字符串(可选项),showrule可以用三种不同格式的任意一种返回规则:'verbose' (缺省模式,此处English是缺省语言), 'symbolic''indexed',它们用于隶属度函数的索引引用;

    若要使用第四个参数Lang,则Lang必须是verbose(语言)型的,并且下面这种调用showrule(fis,indexList,format,Lang)使用Lang给定的语言显示规则,它们必须是'english''francais''deutsch'

    6-35

    >>a = readfis('tipper');

    >>showrule(a,1)

    ans =

    1. If (service is poor) or (food is rancid) then (tip is cheap) (1)

    >>showrule(a,2)

    ans =

    2. If (service is good) then (tip is average) (1)

    >>showrule(a,[3 1],'symbolic')

    ans =

    3. (service==excellent) | (food==delicious) => (tip=generous) (1)

    1. (service==poor) | (food==rancid) => (tip=cheap) (1)

    >>showrule(a,1:3,'indexed')

    ans =

    1 1, 1 (1) : 2

    2 0, 2 (1) : 1

    3 2, 3 (1) : 2

    6.2.21  显示FIS结构的所有属性

    函数  showfis

    格式  showfis(fismat)

    说明  以分行方式显示MATLAB工作空间FIS变量fismat,允许你查看结构的每个域的意义和内容。

    6-36

    >>a = readfis('tipper');

    >>showfis(a)

    结果为

    1.  Name             tipper

    2.  Type             mamdani

    3.  Inputs/Outputs   [2 1]

    4.  NumInputMFs      [3 2]

    5.  NumOutputMFs     3

    6.  NumRules         3

    7.  AndMethod        min

    8.  OrMethod         max

    9.  ImpMethod        min

    10. AggMethod        max

    11. DefuzzMethod     centroid

    12. InLabels         service

    13.                  food   

    14. OutLabels        tip

    15. InRange          [0 10]

    16.                  [0 10]

    17. OutRange         [0 30]

    18. InMFLabels       poor     

    19.                  good     

    20.                  excellent

    21.                  rancid   

    22.                  delicious

    23. OutMFLabels      cheap   

    24.                  average 

    25.                  generous

    26. InMFTypes        gaussmf

    27.                  gaussmf

    28.                  gaussmf

    29.                  trapmf 

    30.                  trapmf 

    31. OutMFTypes       trimf

    32.                  trimf

    33.                  trimf

    34. InMFParams       [1.5 0 0 0] 

    35.                  [1.5 5 0 0] 

    36.                  [1.5 10 0 0]

    37.                  [0 0 1 3]   

    38.                  [7 9 10 10] 

    39. OutMFParams      [0 5 10 0]  

    40.                  [10 15 20 0]

    41.                  [20 25 30 0]

    42. Rule Antecedent  [1 1]

    43.                  [2 0]

    44.                  [3 2]

    42. Rule Consequent  1

    43.                  2

    44.                  3

    42. Rule Weigth      1

    43.                  1

    44.                  1

    42. Rule Connection  2

    43.                  1

    44.                  2matlab

  • 相关阅读:
    NOIP 模拟 $94; m 超级加倍$
    NOIP 模拟 $94; m 欢乐豆$
    NOIP 模拟 $94; m 叁仟柒佰万$
    NOIP 模拟 $94; m 开挂$
    NOIP 模拟 $92; m 优美的旋律$
    NOIP 模拟 $92; m 翻转游戏$
    NOIP 模拟 $92; m 石子合并$
    NOIP 模拟 $90; m 校门外歪脖树上的鸽子$
    NOIP 模拟 $90; m 混乱邪恶$
    NOIP 模拟 $90; m 快速排序$
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2347922.html
Copyright © 2020-2023  润新知