MATLAB模糊逻辑工具箱函数详解
1. ruleedit函数
ruleedit函数用于打开规则编辑器,可查看或修改模糊系统的规则。
1.1 语法
-
ruleedit(fis):打开规则编辑器并加载模糊推理系统fis。 -
ruleedit(fileName):打开规则编辑器并从指定文件fileName加载模糊推理系统。
1.2 输入参数
| 参数 | 描述 |
|---|---|
| fis |
模糊推理系统,为MATLAB工作区中的
mamfis
或
sugfis
对象。
|
| fileName |
文件名,为字符串或字符向量,可带或不带
.fis
扩展名,文件需在当前工作目录或MATLAB路径中。
|
1.3 示例
% 从文件加载模糊系统
fis = readfis('tipper');
% 打开规则编辑器
ruleedit(fis)
1.4 兼容性考虑
从R2019b开始发出警告,未来版本将移除对将模糊推理系统表示为结构的支持,建议使用
mamfis
和
sugfis
对象代替。可使用
convertfis
函数将现有模糊推理系统结构转换为对象。
2. ruleview函数
ruleview函数用于打开规则查看器,可查看模糊系统的推理过程。
2.1 语法
-
ruleview(fis):打开规则查看器并加载模糊推理系统fis。 -
ruleview(fileName):打开规则查看器并从指定文件fileName加载模糊推理系统。
2.2 输入参数
| 参数 | 描述 |
|---|---|
| fis |
模糊推理系统,为MATLAB工作区中的
mamfis
或
sugfis
对象。
|
| fileName |
文件名,为字符串或字符向量,可带或不带
.fis
扩展名,文件需在当前工作目录或MATLAB路径中。
|
2.3 示例
% 从文件加载模糊系统
fis = readfis('tipper');
% 打开规则查看器
ruleview(fis)
2.4 兼容性考虑
从R2019b开始发出警告,未来版本将移除对将模糊推理系统表示为结构的支持,建议使用
mamfis
和
sugfis
对象代替。可使用
convertfis
函数将现有模糊推理系统结构转换为对象。
3. setfis函数
setfis函数用于设置模糊系统的属性,但未来版本将被移除,建议使用点符号设置模糊推理系统属性。
3.1 语法
-
outfis = setfis(infis,fisPropName,fisPropValue):将模糊系统infis的指定属性设置为指定值。 -
outfis = setfis(infis,varType,varIndex,varPropName,varPropValue):设置模糊系统中变量的指定属性。 -
outfis = setfis(infis,varType,varIndex,'mf',mfIndex,mfPropName,mfPropValue):设置模糊系统中输入或输出变量的隶属函数的指定属性。
3.2 输入参数
| 参数 | 描述 |
|---|---|
| infis |
模糊系统,为
mamfis
或
sugfis
对象。
|
| fisPropName |
模糊系统属性名,如
'name'
、
'type'
等。
|
| fisPropValue | 模糊系统属性值,为字符串或字符向量。 |
| varType |
变量类型,为
'input'
或
'output'
。
|
| varIndex | 变量索引,为正整数。 |
| varPropName |
变量属性名,为
'name'
或
'range'
。
|
| varPropValue |
变量属性值,根据
varPropName
可为字符向量、字符串或二维行向量。
|
| mfIndex | 隶属函数索引,为正整数。 |
| mfPropName |
隶属函数属性名,为
'name'
、
'type'
或
'params'
。
|
| mfPropValue |
隶属函数属性值,根据
mfPropName
可为字符向量、字符串或行向量。
|
3.3 输出参数
| 参数 | 描述 |
|---|---|
| outfis |
更新后的模糊系统,为
mamfis
或
sugfis
对象。
|
3.4 示例
% 加载模糊推理系统
fis = readfis('tipper');
% 设置去模糊化方法为平分线法
fis = setfis(fis,'defuzzmethod','bisector');
% 查看更新后FIS的去模糊化方法
getfis(fis,'defuzzmethod')
% 设置第一个输入变量的名称为'help'
fis = setfis(fis,'input',1,'name','help');
% 查看更新后系统中变量的名称
getfis(fis,'input',1,'name')
% 改变第一个输入变量的第二个隶属函数的类型为三角隶属函数
fis = setfis(fis,'input',1,'mf',2,'type','trimf');
% 转换隶属函数参数
gaussParams = getfis(fis,'input',1,'mf',2,'params');
triParams = mf2mf(gaussParams,'gaussmf','trimf');
% 设置隶属函数参数为转换后的值
fis = setfis(fis,'input',1,'mf',2,'params',triParams);
% 查看更新后的隶属函数属性
getfis(fis,'input',1,'mf',2)
3.5 兼容性考虑
从R2018b开始不推荐使用,未来版本将移除。建议使用点符号设置模糊推理系统属性,例如:
| 原代码 | 替换代码 |
| ---- | ---- |
|
fis = setfis(fis,'andmethod','prod')
|
fis.AndMethod = 'prod'
|
|
fis = setfis(fis,'input',1,'name','service')
|
fis.Inputs(1).Name = "service"
|
|
fis = setfis(fis,'input',2,'mf',1,params,[5 10 15])
|
fis.Inputs(2).MembershipFunctions(1).Parameters = [5 10 15]
|
4. setTunable函数
setTunable函数用于将指定参数设置为可调整或不可调整。
4.1 语法
paramsOut = setTunable(paramsIn,tunableFlag)
4.2 输入参数
| 参数 | 描述 |
|---|---|
| paramsIn |
可调参数设置,为数组、
VariableSettings
对象、
RuleSettings
对象、
MembershipFunctionSettings
对象或
MembershipFunctionSettingsType2
对象。
|
| tunableFlag | 参数可调性,为逻辑值1(可调)或0(不可调)。 |
4.3 输出参数
| 参数 | 描述 |
|---|---|
| paramsOut |
修改后的可调参数设置,与
paramsIn
类型相同,只是所有可调参数设置为
tunableFlag
指定的值。
|
4.4 示例
% 创建模糊推理系统
fis = mamfis("NumInputs",2,"NumOutputs",2);
% 获取可调设置
[in,out,rule] = getTunableSettings(fis);
% 设置所有输出变量设置为不可调
out = setTunable(out,0);
% 设置第一个输入变量为不可调
in(1) = setTunable(in(1),0);
% 设置输入2的第一个隶属函数为不可调
in(2).MembershipFunctions(1) = setTunable(in(2).MembershipFunctions(1),0);
% 设置前两个规则为不可调
rule(1:2) = setTunable(rule(1:2),0);
总结
以上介绍了MATLAB模糊逻辑工具箱中的
ruleedit
、
ruleview
、
setfis
和
setTunable
函数,包括其语法、输入输出参数、示例和兼容性考虑。在使用这些函数时,需要注意未来版本的兼容性问题,及时更新代码以适应新的使用方式。
graph LR
A[开始] --> B[ruleedit函数]
B --> C[ruleview函数]
C --> D[setfis函数]
D --> E[setTunable函数]
E --> F[结束]
MATLAB模糊逻辑工具箱函数详解(续)
5. setTunableValues函数
setTunableValues函数用于指定模糊推理系统的可调参数值。
5.1 语法
-
fisOut = setTunableValues(fisIn,paramset,paramvals):设置模糊推理系统fisIn的可调参数值,并将结果模糊系统返回为fisOut。 -
___ = setTunableValues( ___ ,'IgnoreInvalidParameters',ignoreInvalid):设置一个标志以忽略无效的参数值。
5.2 输入参数
| 参数 | 描述 |
|---|---|
| fisIn |
模糊推理系统,为
mamfis
、
sugfis
、
mamfistype2
、
sugfistype2
或
fistree
对象。
|
| paramset |
可调参数设置,为输入FIS中输入、输出和规则参数设置的数组,可使用
getTunableSettings
函数获取。
|
| paramvals |
可调参数值,为数组,其值的顺序与
paramset
中参数的顺序匹配,可使用
getTunableValues
函数获取。
|
| ignoreInvalid |
忽略无效参数的标志,为逻辑值
true
或
false
。若为
true
,则无效的
paramvals
将被替换为模糊系统的现有参数值。
|
5.3 输出参数
| 参数 | 描述 |
|---|---|
| fisOut |
修改后的模糊推理系统,为
mamfis
、
sugfis
、
mamfistype2
、
sugfistype2
或
fistree
对象,与
fisIn
相同,只是
paramset
指定的参数具有
paramvals
指定的值。
|
5.4 示例
% 创建模糊推理系统
fis = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1);
% 获取可调参数设置
[in,out,rule] = getTunableSettings(fis);
% 获取可调参数值
paramVals = getTunableValues(fis,[in;out;rule]);
% 重新定义一些值
paramVals(1:3) = [0 0 1];
% 更新FIS的可调参数值
fis = setTunableValues(fis,[in;out;rule],paramVals);
6. showfis函数
showfis函数用于显示带注释的模糊推理系统,但未来版本将被移除,建议直接查看FIS的属性。
6.1 语法
showfis(fis)
6.2 输入参数
| 参数 | 描述 |
|---|---|
| fis |
模糊系统,为
mamfis
或
sugfis
对象。
|
6.3 示例
% 加载模糊推理系统
a = readfis('tipper');
% 显示FIS信息
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 Weight 1
43. 1
44. 1
42. Rule Connection 2
43. 1
44. 2
6.4 兼容性考虑
从R2018b开始不推荐使用,未来版本将移除。建议直接查看FIS的属性,例如:
% 直接查看FIS属性
myFIS
% 查看第一个输入变量的隶属函数信息
myFIS.Inputs(1).MembershipFunctions
7. showrule函数
showrule函数用于显示模糊推理系统的规则。
7.1 语法
-
showrule(fis):显示模糊推理系统fis中的规则。 -
showrule(fis,Name,Value):使用一个或多个名称 - 值参数指定的选项显示规则。
7.2 输入参数
| 参数 | 描述 |
|---|---|
| fis |
模糊推理系统,为
mamfis
、
sugfis
、
mamfistype2
或
sugfistype2
对象。
|
| Name - Value Pair Arguments |
可选的名称 - 值对参数,如
RuleIndex
、
Format
、
Language
等。
|
7.3 名称 - 值对参数
| 参数名 | 描述 |
|---|---|
| RuleIndex |
要显示的规则,可为正整数(单个规则的索引)或正整数向量(多个规则的索引),默认包含
fis
中所有规则的索引。
|
| Format |
规则格式,可为
"verbose"
(默认,使用语言表达式)、
"symbolic"
(使用与语言无关的符号表达式)或
"indexed"
(使用输入和输出隶属函数索引和模糊运算符的整数表示)。
|
| Language |
规则语言,仅适用于
"verbose"
格式,可为
"english"
(默认,英语)、
"francais"
(法语)或
"deutsch"
(德语)。
|
7.4 示例
% 加载模糊推理系统
fis = readfis('tipper');
% 显示所有规则,使用语言表达式
showrule(fis)
% 显示规则,使用符号表达式
showrule(fis,'Format','symbolic')
% 显示规则,使用隶属函数索引
showrule(fis,'Format','indexed')
% 显示第一条和第三条规则
showrule(fis,'RuleIndex',[1 3])
% 以德语显示规则
showrule(fis,'Language','deutsch')
7.5 兼容性考虑
从R2019b开始发出警告,未来版本将移除对将模糊推理系统表示为结构的支持,建议使用
mamfis
和
sugfis
对象代替。可使用
convertfis
函数将现有模糊推理系统结构转换为对象。
总结
本文详细介绍了MATLAB模糊逻辑工具箱中的多个函数,包括
ruleedit
、
ruleview
、
setfis
、
setTunable
、
setTunableValues
、
showfis
和
showrule
函数。每个函数都有其特定的功能和使用方法,在使用过程中需要注意未来版本的兼容性问题,及时更新代码以适应新的使用方式。通过合理运用这些函数,可以更高效地进行模糊推理系统的设计、调试和分析。
graph LR
A[setTunableValues函数] --> B[showfis函数]
B --> C[showrule函数]
C --> D[结束]
MATLAB模糊逻辑工具箱常用函数解析
超级会员免费看
45

被折叠的 条评论
为什么被折叠?



