Fuzzy Logic Toolbox | ![]() ![]() |
The FIS Structure
The FIS structure is the MATLAB object that contains all the fuzzy inference system information. This structure is stored inside each GUI tool. Access functions such as getfis and setfis make it easy to examine this structure. You can also access the FIS structure information using the structure.field
syntax (see the section, Working from the Command Line).
All the information for a given fuzzy inference system is contained in the FIS structure, including variable names, membership function definitions, and so on. This structure can itself be thought of as a hierarchy of structures, as shown in the following diagram.
You can generate a listing of information on the FIS using the showfis command, as shown below.
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
The list of command-line functions associated with FIS construction include getfis, setfis, showfis, addvar, addmf, addrule, rmvar, and rmmf.
Saving FIS Files on Disk
A specialized text file format is used for saving fuzzy inference systems to a disk. The functions readfis and writefis are used for reading and writing these files.
If you prefer, you can modify the FIS by editing its .fis text file rather than using any of the GUIs. You should be aware, however, that changing one entry may oblige you to change another. For example, if you delete a membership function using this method, you also need to make certain that any rules requiring this membership function are also deleted.
The rules appear in "indexed" format in a .fis
text file. Here is the file tipper.fis.
[System] Name='tipper' Type='mamdani' NumInputs=2 NumOutputs=1 NumRules=3 AndMethod='min' OrMethod='max' ImpMethod='min' AggMethod='max' DefuzzMethod='centroid' [Input1] Name='service' Range=[0 10] NumMFs=3 MF1='poor':'gaussmf',[1.5 0] MF2='good':'gaussmf',[1.5 5] MF3='excellent':'gaussmf',[1.5 10] [Input2] Name='food' Range=[0 10] NumMFs=2 MF1='rancid':'trapmf',[0 0 1 3] MF2='delicious':'trapmf',[7 9 10 10] [Output1] Name='tip' Range=[0 30] NumMFs=3 MF1='cheap':'trimf',[0 5 10] MF2='average':'trimf',[10 15 20] MF3='generous':'trimf',[20 25 30] [Rules] 1 1, 1 (1) : 2 2 0, 2 (1) : 1 3 2, 3 (1) : 2
![]() | FIS Evaluation | Working with Simulink | ![]() |