32、MATLAB模糊逻辑工具箱函数详解

MATLAB模糊逻辑工具箱常用函数解析

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实现方案 该算法通过建立三维空间点与二维图像点之间的几何对应关系,实现相机外部参数的精确求解。其核心原理在于将三维控制点表示为四个虚拟基点的加权组合,从而将非线性优化问题转化为线性方程组的求解过程。 具体实现步骤包含以下关键环节:首先对输入的三维世界坐标点进行归一化预处理,以提升数值计算的稳定性。随后构建包含四个虚拟基点的参考坐标系,并通过奇异值分解确定各三维点在该基坐标系下的齐次坐标表示。接下来建立二维图像点与三维基坐标之间的投影方程,形成线性约束系统。通过求解该线性系统获得虚拟基点在相机坐标系下的初步坐标估计。 在获得基础解后,需执行高斯-牛顿迭代优化以进一步提高估计精度。该过程通过最小化重投影误差来优化相机旋转矩阵和平移向量。最终输出包含完整的相机外参矩阵,其中旋转部分采用正交化处理确保满足旋转矩阵的约束条件。 该实现方案特别注重数值稳定性处理,包括适当的坐标缩放、矩阵条件数检测以及迭代收敛判断机制。算法能够有效处理噪声干扰下的位姿估计问题,为计算机视觉中的三维重建、目标跟踪等应用提供可靠的技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值