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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM