当前位置: 首页 > >

模煳控制的Matlab仿真_图文

模糊控制技术
模糊控制的Matlab仿真

用MATLAB的模糊逻辑工具箱 (Fuzzy toolbox)实现
? Matlab4.2以后的版本中推出的模糊工具箱 (Fuzzy Toolbox),为仿真模糊控制系统提供了 很大的方便。
? 在Simulink环境下对PID控制系统进行建模是 非常方便的,而模糊控制系统与PID控制系统 的结构基本相同,仅仅是控制器不同。
? 对模糊控制系统的建模关键是对模糊控制器的 建模。Matlab软件提供了一个模糊推理系统 (FIS)编辑器,只要在Matlab命令窗口键入 Fuzzy就可进入模糊控制器编辑环境。

1. Matlab模糊逻辑工具箱仿真
? 模糊推理系统编辑器(Fuzzy)
? 模糊推理系统编辑器用于设计和显示模糊推理 系统的一些基本信息,如推理系统的名称,输 入、输出变量的个数与名称,模糊推理系统的 类型、解模糊方法等。其中模糊推理系统可以 采用Mandani或Sugeuo两种类型,解模糊方法 有最大隶属度法、重心法、加权平均等。
? 打开模糊推理系统编辑器,在MATLAB的命令窗 (command window)内键入:fuzzy 命令,弹 出模糊推理系统编辑器界面,如下图所示。

多个输入时,在Edit菜单中,选Add variable… >input,加入新的输入input,如下图所示
选择 input(选中 为红框),在 界面右边文 字输入处键 入相应的输 入名称,例 如,温度输入 用 tmpinput, 磁能 输入用 maginput,等。

? 隶属度函数编辑器(Mfedit)
? 该编辑器提供一个友好的人机图形交互环境,用 来设计和修改模糊推理系中各语言变量对应的隶 属度函数的相关参数,如隶属度函数的形状、范 围、论域大小等,系统提供的隶属度函数有三角、 梯形、高斯形、钟形等,也可用户自行定义。
? 双击所选input,弹出一新界面,在左下Range处 和Display Range处,填入取只范围,例如 0至9 (代表0至90)。
? 在右边文字文字输入Name处,填写隶属函数的名 称,例如lt或LT(代表低温)。
? 在Type处选择trimf(意为:三角形隶属函数曲线, triangle member function),当然也可选其它形 状。

在Params(参数)处,选择三角形涵盖的区间,填写三个 值,分别为三角形底边的左端点、中点和右端点在横坐标 上的值。这些值由设计者确定。

用类似的方法设置输出output的参数。比如:共有9个规 则,所以相应地有9个输出隶属函数。默认3个隶属函数, 剩下6个由设计者加入。点击Edit菜单,选 Add Custom MS…->继续填入相应参数即可。

? 模糊推理规则编辑器Ruleedit
? 通过隶属度函数编辑器来设计和修改 “IF...THEN”形式的模糊控制规则。由该编辑 器进行模糊控制规则的设计非常方便,它将输入 量各语言变量自动匹配,而设计者只要通过交互 式的图形环境选择相应的输出语言变量,这大大 简化了规则的设计和修改。另外,还可为每条规 则选择权重,以便进行模糊规则的优化。
? 选Edit菜单,选择Rules, 弹出一新界面Rule Editor. 在底部的选择框内,选择相应的 IF…AND…THEN 规则,点击Add rule 键,上部 框内将显示相应的规则。本例中用9条左右的规 则,依次加入。如下图所示:

? 模糊逻辑工具箱仿真结果
? 模糊规则浏览器用于显示各条模糊控制规则对 应的输入量和输出量的隶属度函数。通过指定 输入量,可以直接的显示所采用的控制规则, 以及通过模糊推理得到相应输出量的全过程, 以便对模糊规则进行修改和优化。
? 所有规则填入后,选菜单View, 选择Rules,弹 出一新界面Rule Viewer,如下图所示。

? 上图表示当温度为45度、磁能为45瓦时,输出 干度为约70个单位。左右拉动界面中的两支红 线,拉到欲选的近似值,右边图顶显示相应的 干度结果。
? 上图中选菜单View, 选择Surface,弹出一新界 面Surface Viewer,弹出该课题结果的三维图。 如下图所示。

注意将鼠标箭头放置图内,移动鼠标可得到不同 角度的视图,如下图所示。

Matlab模糊控制仿真演示例子
? 模型sltank.mdl ——使用模糊控制器对水箱水位进 行控制。
? 假定水箱有一个进水口和一个出水口,可以通过控 制一个阀门来控制流入的水量(即水位高度),但 是流出的速度取决于出水口的半径(定值)和水箱 底部的压力(随水箱中的水位高度变化)。系统有 许多非线性特性。
? 要求设计的目标是一个合适的进水口阀门的控制器, 能够根据水箱水位的实时测量结果对进水阀门进行 相应控制,使水位满足特定要求(即特定输入信 号)。一般情况下,控制器以水位偏差(理想水位 和实际水位的差值)及水位变化率作为输入,输出 的控制结果是进水阀打开或关闭的速度。

PID控 制模块

阀门 水箱 模型 模型

仿真动 画演示

模糊控 制模块

? 在Matlab中仿真,可 以看到出现一个水箱 模型的仿真动画窗口。 该动画由一个S函 数”animtank.m”实 现。从动画中,可以 观察到实际系统的水 位跟随殊荣的要求水 位信号变化。
? 如果对S函数的实现感兴趣,可以键入命令open animtank(或edit animtank)来查看” animtank.m”文件

? 在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。

? 这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。
? 对于仿真模型系统中已经建立的水箱模块、阀门模块 以及动画仿真显示模块可以直接使用,这里我们重点 讨论与模糊推理系统设计问题相关的模糊系统变量 tank (即 MATLAB 的模糊逻辑推理系统)。在 MATLAB 命令窗口中键入命令 fuzzy tank ,就可以开 始对模糊系统 tank 进行编辑了。

? 为简单起见,我们直接利用系统里已经编辑好的 模糊推理系统,在它的基础上进行修改。这里我 们采用与tank . fis中输入输出变量模糊集合完 全相同的集合隶属度函数定义,只是对模糊规则 进行一些改动,来学习模糊工具箱与仿真工具的 结合运用。对于这个问题,根据经验和直觉很显 然可以得到如下的模糊控制规则:
If (水位误差小)then(阀门大小不变(权重 1 )
If (水位低) then (阀门迅速打开)(权重 1 )
If (水位高) then (阀门迅速关闭)(权重 1 )

? 这相当于在原有模糊系统模型上减少两条模糊 规则得到的新的模糊推理系统。
? 改动完成后进行仿真,观察示波器模块,可以 得到系统水位变化,如图所示。

? 从上图的仿真控制结果曲线中可以看出上述由三 条模糊规则组成的模糊控制系统的结果并不理想, 因此可以再增加如下两条模糊控制规则:
If (水位误差小且变化率为负) then (阀门缓慢 关闭)(权重 1 )
If (水位误差小且变化率为正) then (阀门缓慢 打开)(权重 1 )
? 系统的输出变化曲线如下图所示。

? 从上图可以看出,在增加了模糊控制规则后,系 统的动态特性得到较大改善,不但具有较短的响 应时间,而且超调量也很小。可以用 Surfview tank 命令来显示模糊控制系统的输出曲面,如图 所示。

? 在这个例子中,还可以用传统的 PID 控制方 法与模糊逻辑推理控制进行比较。在水箱仿真 环境主界面中将控制方法选择开关中间的 const 模块的值由由-1 改为 1 ,这时系统将用 传统的 PID 控制方法进行控制,如图所示。

其他例子
? 模型Shower.mdl―淋浴温度调节模糊控制系统仿真; ? 模型slcp.mdl―单级小车倒摆模糊控制系统仿真; ? 模型 slcp1.mdl―变长度倒摆小车模糊控制系统仿
真; ? 模型 slcpp1.mdl—定长、变长二倒摆模糊控制系
统仿真; ? 模型slbb.mdl―球棒模糊控制系统仿真; ? 模型sltbu.mdl―卡车智能模糊控制倒车系统仿真; ? 模型sltank2.mdl ― 用子系统封装的水箱控制仿
真。

? 学习 MATLAB 仿真工具的一个快速有效的方法就 是学习示例模型,通过看懂这些模型和模块的功 能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。
? 下面以模型Shower.mdl的结构作一个介绍,方便 读者更好地理解和学习这个例子。
? 模型Shower.mdl是一个淋浴温度及水量调节的模 糊控制系统的仿真,该模糊控制器的输入变量分 别是水流量和水温,输出变量分别是对热水阀和 冷水阀的控制方式。该问题是一个典型的经验查 表法控制示例,是 Mamdani型系统,其模糊控制 矩阵存为磁盘文件shower.fis。

热水阀子系统

水量示 波器

温度示 波器
冷水阀子系统

? 这个仿真模型的输出是用示波器来表示的,如 图所示。通过示波器上的图形我们可以清楚地 看到温度和水流量跟踪目标要求的性能。

水温示波器

水流示波器

水温偏差区间模糊划分及隶属度函数

水流量偏差区间模糊划分及隶属度函数

输出对冷水阀控制策略的模糊化分及隶属度函数

输出对热水阀控制策略的模糊化分及隶属度函数

其中输入变量水温与流速的偏差与输出热水阀、冷水阀 的控制方法的经验表格如表1及表2所示。

根据这两个输出控制表,可以产生九条模糊控制规则, 如下:

系统的模糊推理运算相关定义如下: 其余例子,请各位同学自行打开研究学习。

通过Maltab命令(程序)创建和 计算模糊逻辑系统
? 前面介绍过如何使用图形化工具建立模糊逻辑系 统,我们也可以完全用命令行或程序段的方式来 实现。
? 小费问题:
? 实际生活中有着许多模糊的概念和逻辑方式, “给小费”问题就是一个可以用模糊逻辑来分析 的经典的例子。下图表示的是一个关于饭店的服 务质量和顾客所给小费之间的关系图,左边表示 饭店的服务质量,作为输入;右边表示顾客所给 的小费,作为输出,两者是有一定逻辑关系的。

? 图中的黑箱表示一种映射规则,将服务质量映射 到小费。这个黑箱就是这一逻辑关系的核心部分, 它可以理解为各种不同的逻辑,例如模糊逻辑、 线性逻辑、专家系统、神经网络、微分方程、多 维表格查询或者随机选择器等。在上述问题中, 模糊逻辑被证明是最佳的。

? 在国外饭店就餐后一般需要付给侍者小费,这 是国外模糊系统的教材中一个非常经典的例子。 下面我们通过小费问题来说明模糊逻辑的作用。
? “小费”问题的核心就是:多少小费是“合适” 的?我们先把问题简化,假定用从 0 —10 的 数字代表服务的质量(10 表示非常好,0 表 示非常差),小费应该给多少?这里还考虑到 问题的背景 —在美国平均的小费是餐费15%, 但具体多少随服务质量而变。

? 首先考虑最简单的情况,顾客总是多给总账单 的15%作为小费:
? 用 MATLAB 语句绘图,如下图所示。

虽然是简单的线性关 系,但这样的结果已 经基本能够反映服务 质量对小费的影响效 果了,如果考虑到顾 客所给的小费也应当 能反映食物的质量, 那么问题就在原来的 基础上扩展为:给定 两个从 0 到 10 的数 字分别代表服务和食 物的质量( 10 表示 非常好, 0 表示非常 差),这时小费与它 们之间的关系又应当 如何反映呢?

假设是二元线性关系 用下列 MATLAB 语句可绘出下图 。

可以看到,如果不考虑服务质量因素比食物质量因素对 于小费的支付占有更大的比重,上面的关系图形已经能 够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 %。这里可以设定权重因子:
用下列 MATLAB 语句可绘出下图

这样的结果与实际情况还是有些不符。通常顾客都是给15%的 小费,只有服务特别好或特别不好的时候才有改变,也就是说, 希望在图形中间部分的响应平坦些,而在两端(服务好或坏) 有凸起或凹陷。这时服务与小费是分段线性的关系。例如,用 下面 MATLAB 语句绘出的下图的情况。

上图没有考虑食物质量的影响,我们加入这个因素后, 扩展为三维的,就有如下的结果:
用下列 MATLAB 语句可绘出图

? 现在的结果比较好了,可是函数看起来有点复杂, 而且程序也越来越长,将来不便于修改和增加新 的规则及排除检查错误。对于不清楚设计过程的 人来说,设计人员的思维是不容易被理解的。
? 模糊系统可以很好地结合人类的自然语言。对于 小费问题,现在只考虑关键因素,把问题简化, 得出下面三条规则:
① 当服务很差的时候,小费比较少。
② 当服务比较好的时候,小费中等。
③ 当服务非常好的时候,小费比较高。

? 如果我们把食物对小费的影响考虑进来, 可以增加下面两条规则:
④ 当食物很差时,小费比较少。
⑤ 当食物很好时,小费比较高。
? 上面五条规则不分先后顺序,但是各条规 则的重要性可以是不同的,在没有特殊要 求的情况下,可以认为这些规则的重要性 (权重)是相同的。

? 可以把服务和食物的质量综合起来,总结为如下 三条规则:
① 当服务差或食物差的时候,小费少。 ② 当服务好的时候,小费中等。 ③ 当服务很好或食物好的时候,小费高。 ? 当我们已经得到上述三条模糊逻辑系统的推理规
则后,只要再给出其中的模糊变量(例如“服务 差”、“服务好”、“服务非常好”等概念)的 定义和表示,就建立了该问题的一个完整的模糊 推理系统的方案。这个系统的核心就是上述三条 规则以及相关模糊变量的定义。 ? 使用Matlab图形化工具,可以方便地建立起模糊 控制系统。

用命令行函数实现模糊逻辑系统
? 前面主要介绍了 MATLAB 图形化工具的使用, MATLAB 同样也提供了一些函数命令来实现模 糊逻辑系统。
? 这些函数不仅能完全实现图形化方式所提供的 功能,同时还可以实现图形化方式所难以实现 的功能。
? 特别是对于那些比较复杂的模糊推理系统,在 输入输出变量、隶属度函数、模糊规则数目比 较多的时候,如果要在图形化界面中人工输入, 效率就很低。

? 如果通过命令行方式的编程,就可以让计算机完 成许多重复性的输入工作,大大减少了工作量。
? 还有其他一些情况,如输入输出变量、隶属度函 数、模糊规则等是由程序计算得到的,这时如果 采用命令行的编程会更加简单方便。
? MATLAB 模糊工具箱的图形化工具与命令行函数是 统一的,我们可以将它们结合使用。
? 无论是命令行方式或是图形化方式创建的系统, 其格式都是一样的。因此,如果根据需要同时使 用两种方法来编辑一个模糊逻辑系统,往往会达 到更好的效果。

命令行函数使用示例入门
小费问题是模糊逻辑工具箱中提供的一个模糊推理系统的示 例。在 MATLAB 中一个模糊逻辑推理系统被当作是一种 FIS 结构。例如,我们在命令行工作环境键入命令:
结果:

该命令加载小费问题模糊推理系统的数据文件到当前的 工作空间中,并存为变量 a , a 是一种 FIS 结构的变 量。在上面的结果之列中,冒号左边的标号表示 MATLAB 的 FIS 结构中的与 tipper . fis 相关的结构成员变量 名,可以通过“结构名.成员名”的方式来访问这些结 构成员变量。例如键入命令:

其实在 MATLAB 里,模糊推理系统是以特定的语法用文 本方式来存储的。如果键入命令:type tipper.fis
就可以看到这个用 ASCll 代码存储的模糊系统。函数 readfis 得到了这个数据文件中的所有属性,并把它们存入一个结构 (也可以看作是一个广义的矩阵)。上面的例子中通过语句
a = readfis ( ‘tipper . fis’ ) 变量 a 被赋予一个 FIS ( Fuzzy Inference system )结构变量矩 阵。这个矩阵主要由 ASCll 代码构成,通常表现为数字的排 列,这样就不便于阅读,因此需要特定的函数来显示系统属性。 函数 getfis ( a )返回结果是关于模糊推理系统的一般属性,比 如说系统名称,输入、输出变量的名称等等。例如键入命令: getfis ( a )

结果:

从上面的结果我们可以看到,有些属性并不是结构变量 a 中所包含的。例如键入: 系统返回如下错误信息:
但是,如果键入:
系统返回结果:
getfis 函数还有若干种使用方法, 可以键入右边命令试一试,看看 结果。

前述功能同样可以通过“结构名.成员名”的方式来访 问,只是具体的访问方式与成员的类型相关。例如,要 得到上述 getfis ( a ,’Inlabels ’)命令的结果,可以采 用如下的方式:
返回结果:
setfis是和getfis相对应的函数,它允许改变一个 FIS系统的特 性。如果想将上述系统的名字 tipper 改为 gratuity ,可以运行 命令:

返回结果:
在结果中可以看到 name 变为 gratuity ,同样上面的操作也 可以用命令“ a .name = ‘ gratuity’ ” ,来实现。如果想要知道 更详细的内容,通过函数 showfis ( a )就可以得到这个 FIS 矩阵的详细属性。这个函数最主要是用来进行程序调试,但 同时它也能分行显示所有记录在 FIS 矩阵的信息。

在这里结构变量 a 代表一个小费问题的模糊推理系统, 前面提到的图形化编辑工具都可以用来对它进行相关 操作。下面这些函数命令将打开相应的小费系统图形 化工具界面。
如果 a 是一个 Sugeno 型的模糊系统,命令 anfisedit ( a )将打开 ANFIS (模糊神经网络 系统)图形编辑界面。

通过 MATLAB 命令(程序)创建 和计算模糊逻辑系统
? 前面介绍过如何用图形化工具建立模糊逻辑系 统,这些也可以完全用命令行或程序段的方式 实现。
? 仍然使用小费问题的例子作为范例,在这个例 子中将用到 newfis 、 addvar 、 addmf 、 addrde 等几个函数。
? 在用命令行建立模糊逻辑系统的过程中,往往 最令人迷惑的就是模糊规则在系统中的简述表 达方式。

规则是通过函数 addrule 来加入的,每一个输 入或输出的变量都有一个索引 ( index )值, 同样每一个隶属度函数也有一个 index 值, 输入规则的函数就是使用这些索引来创建相应 的模糊规则,在 MATLAB 中模糊规则一般具 有如下形式:
模糊规则按照下面的逻辑被转化成一种数据结构(或 矩阵)的形式来表示:如果系统由 m 个输入、 n 个 输出变量和 k 条模糊规则组成,则该规则结构是一个 ( m + n + 2 , k )的矩阵。 该矩阵的每个行向量代表一条模糊规则,这个行向量 的前 m 个数表示前 m 个输入变量对应的隶属度函数 的索引值

例如,第一列表示第一个输入变量在各条规则 的相应的隶属度函数的索引,第二列表示第二 个输入变量相应的隶属度函数的索引。
接着的 n 列表示 n 个输出变量对应的隶属度函数的 索引值。第 m + n + 1 列的数分别表示各条规则的权 重(一般为 1 ) ,第 m + n + 2 列表示各条规则之间 的相互连接方式( and = l , or = 2 )。这样,上面这 条规则用MATLAB的结构表示为一个行向量。
如果输入或是输出变量加了否定修饰词not的话,则 只需在相应的隶属度函数索引值前键入一个负号。例 如,对于规则:

其对应的行向量变为:-1 3 2 0.5 2,依 次解释如下:-1表示not MF1;3表示MF3;2表 示MF2;0.5表示weight=0.5;2表示or。
下面是用“结构名.成员名”表达方式编写的创建小 费模糊推理系统 tipper. fis的命令行程序示例。
例 用命令行方式建立小费推理系统模糊模型。

这样的程序相当繁琐, 如果用前面所提到的 规则结构变量以及相 应的一些 MATLAB函 数来实现会简单得多, 例如:

使用模糊逻辑推理系统对于给定输入得到相应的输出 结果才是实际使用中最终的目的,这个过程在 MATLAB 里可以通过函数 evalfis 来完成。例如, 下面的命令行用来计算小费推理系统对于输入变量为 [ 1 , 2 ]的输出结果:

MATLAB 的 FIS 结构和存储
? 在 MATLAB 中模糊推理系统是以一种 FIS 的 结构类型来表示和存储的。无论是图形化的工 具或是像 getfis 和 setfis 这样的函数,都可以 对这种结构进行直接的操作,同样也可以用 “结构名.成员名” ( “ Structure . field ” )的 语法方式来访问。
? FIS 的结构组成很简单,是将 MATLAB 模糊 逻辑的各个函数统一起来使用的基础。
? FIS 结构可以看作是一种层次结构,如下图所 示。

FIS name type andMethod orMethod defuzzMethod impMethod aggMethod

input name range

Input1 MFs name type params

output name range
rules antecedent consequent

Input2 MFs name type params
Output MFs name type params

模糊推理系统 FIS 结构层次

可以用 Showfis 函数来生成关于 FIS 结构变 量的详细信息列表。例如键入
除了图形化环境, MATLAB 的命令行方式提供了下 列与 FIS 结构的创建和编辑相关的函数: getfis 、 setfis 、 showfis 、 addvar 、 addmf 、 addrule 、 rmvar 及 rnmlf 。关于这些函数的使用方法将在后面 的内容里介绍。

* . fis 文件格式及存储
? 在 MATLAB 中模糊推理系统使用一种特定格 式的文本文件来存储,通常以后缀. fis 命名。 工具箱提供了 readfis 和 writefis 两个函数分 别来读写这种文件。
? FIS 文件是以文本方式存储,也可以不用图形 工具或是相关函数而直接用文本编辑器来编辑 它。但是这样往往比较复杂而且容易出错,因 为改动了一个参数可能需要在文件的许多地方 进行考虑和修改。

? 例如,如果删除了一条隶属度函数,那么所有 与该隶属度函数相关的规则就得删除,而且其 他隶属度函数的序号也会发生改变,其他规则 也要做相应改动。
? 在 FIS 文件中,模糊规则是以 index 方式表示 的。直接用文本编辑器或是用命令 type tipper.fis (或 open tipper.fis, edit tipper.fis ) 都可以查看到小费问题模糊推理系统的文件 tipper . fis ,例如:

前面提到的一些函数,例如 readfis 、 getfis 、 setfis 、 showfis 等,都是模糊工具箱提供的命令行函数,直 接调用这些函数就可以实现对模糊推理系统进行建立、 修改以及存储等操作,下面将详细介绍常用的命令行 函数。

说明:在参数列表中, a 为模糊推理系统对应的矩 阵变量名, varType 用于指定语言变量的类型为字 符型(如‘input ’或 ‘output’ ) ; varName 也为字 符型变量,用于指定语言变量的名; varBoundS 用 于指定语言变量的论域范围。对于添加到同一个模 糊推理系统的语言变量,将按照添加的先后顺序自 动编号,编号从 1 开始,逐渐递增。对于分属于输 入与输出的不同语言变量则独立地分别编号。

说明:当一个模糊语言变量正在被当前的模糊规则集 使用时,试图删除该变量会导致其他相关规则被删除。 系统出现询问对话框,问是否确认删除命令。在一个 模糊语言变量被删除后,Matlab模糊逻辑工具箱将会 自动地对模糊规则集进行修改以保证一致性。从 varType表示语言变量的类型,为字符型,如’input’ 或 ‘output’ ; varIndex表示语言变量的编号。

说明:隶属度函数只能为模糊推理系统中已经存在 的某一语言变量的语言值添加隶属度函数,而不能 添加到一个尚不存在的语言变量中。对于每个语言 变量的隶属度函数按照该函数被添加的顺序加以编 号,第一个添加的隶属度函数被编为1号,此后依 次递增编号。函数必须指定输入以下六个参数:

例 加入三条高斯型隶属度函数,如图所示。

说明:当一个隶属度函数正在被当前模糊推理规则使 用时,如果删除该隶属度函数将会删除涉及它的模糊 规则,系统会出现要求确认消息框,如果确认删除将 自动删除相关的一些规则。各参数的含义说明如下:

例 删除隶属度函数结果。

例 删除被模糊规则使用的隶属度函数。

FIS 系统相关操作

说明:该函数用于创建并返回一个新的模糊推理 系统,模糊推理系统的特性可由函数的参数指定, 其参数个数可达 7 个。如果不指定相应参数则 取为缺省值。参数的含义及类型说明如下:

例 使用缺省参数的 newfis 函数创建 mamdani 和 sugeno 型模糊系统。

说明:打开一个由 filename 指定的模糊推理系统的 数据文件( . fis ) ,并将其加载到当前的工作空间 ( workspace )中的变量 FISMAT 中。当未指定文 件名时, MATLAB 将会打开一个文件对话窗口, 提示用户指定某一 fis 文件。

说明:使用该函数是获得模糊推理系统及其对应矩阵 的所有属性的基本方法。也可以用“结构名.成员名” ( " Structure . field " )的语法方式来替代这个函数。 在参数列表中, a 为模糊推理系统结构在内存中对 应的矩阵变量,必须已经存在,这是必须指定的参数, 后面的其他参数则可以省略。仅有参数 a 时,函数 将列出模糊推理系统的所有属性。

说明: fismat 为 MATLAB 工作环境内存中的模糊 推理系统结构的矩阵变量。
例 以分行的形式显示模糊推理系统 tipperfis 矩 阵的所有属性。

说明:该函数的参数个数可以有 3 、 5 、 7 三种情况。当参 数个数为 3 时,用于设定模糊推理系统的全局属性,包括:

当参数个数为 5 个时,用于设定模糊推理系统矩阵 某一个语言变量的属性,包括: name (变量名称) 和 bounds (论域范围)。当参数个数为 7 时,用
于设定一个语言变量的某一隶属度函数的属性,包括 name (隶属度函数名称)、 type (类型)和 params (参数)。

系统图形显示函数
? 模糊逻辑工具箱中提供了三个函数: plotfis 、 plotmf 和 gensurf ,用于模糊推理系统的图形 显示。下面详细介绍这三个函数。

模糊逻辑工具箱命令函数应用
? 前一节简要介绍了用命令行方式来实现模糊逻 辑推理。运用命令行方式工作需要掌握相应的 一些工具函数的使用,下面就详细介绍这些工 具函数的使用。

模糊逻辑工具基本函数分类表
? 模糊逻辑工具基本函数包括图形工具类函数、 隶属度函数类函数、 FIS 结构的相关类操作函 数、 Sugeno 型模糊系统应用函数、仿真模块 库相关操作函数以及演示范例程序函数等。

1 .图形工具类函数

2 .隶属度函数类函数

3 . FIS 结构的相关类操作函数

4 .仿真模块库相关操作函数

5 .演示范例程序函数

MATLAB 工具箱内置隶属度函数 应用例解
? 在 MATLAB 模糊逻辑工具箱中支持的隶属度 函数类型有如下几种:高斯型、三角形、梯形、 钟型、 Sigmo 记型、 n 型以及 Z 型。
? 利用工具箱中提供的函数可以建立和计算上述 各种类型隶属度函数。
? 还可以自己定义隶属度函数用于调用。 ? 下面介绍工具箱中内含的隶属度函数。

说明:参数 x 用于指定变量的论域范围,参数 a 、 b 和 c 指定三角形函数的形状,要求 a ≤b ≤ c 。该函数 在 b 点处取最大值 1 , a 、 c 点为 0 (如果要获得 顶点小于 1的三角形函数可以使用 trapmf),函数返 回该隶属度函数对应于坐标矩阵 x 的函数值矩阵。其
表达式如下:

例 建立三角形隶属度函数并绘制曲线,如图所示

例 改变参数曲线对比,如图所示。

说明:参数 x 用于指定变量的论域范围,参数 a 、 b 、 c 和 d 用于指定梯形隶属度函数的形状,要求 a < = b 且 c < = d ,如果 b > = c 函数退化为三角形。 函数返回该隶属度函数对应于坐标矩阵 x 的函数值矩
阵。其对应的表达式如下:

例 建立并绘制梯形隶属度函数曲线,如图所示。

例 改变参的数曲线对比,如图所示。

说明:高斯型函数的形状由两个参数决定: sig和 c , 其中 c 决定了函数的中心点, sig决定了函数曲线的 宽度σ。参数 x 是用于指定变量论域的矩阵,函数返 回该隶属度函数对应于坐标矩阵 x 的函数值矩阵。高
斯函数的表达式如下:

例 建立高斯型隶属度函数,如图所示。

例 不同参数对比,如图所示。

说明:参数 x 是用于指定变量论域的矩阵,函数返 回该隶属度函数对应于坐标矩阵 x 的函数值。矩阵 双边高斯型函数的曲线由两个中心点相同的高斯型函 数的左、右半边曲线组合而成,其左右两段表达式如 下:

参数 sig1、c1、sig2、c2分别对应左、右半边高 斯函数的宽度与中心点,当 c1< = c2时,双边高 斯函数在( cl , c2 )段达到最大值 1,否则最大 值小于 1 。
例 建立双边高斯型隶属度函数,如图所示。

例 不同参数对比,如图所示。

说明:参数 x 用于指定变量论域范围的矩阵,函数 返回该隶属度函数对应于坐标矩阵 x 的函数值矩阵。 [a b c]用于指定钟型函数的形状和位置,其中, c 决 定函数的中心位置, a , b 决定函数的形状,一般为
正数。钟型函数的表达式如下:

例 建立并绘制钟型隶属度函数曲线,如图所示。

例 改变参数的曲线对比,如图所示。

说明:参数x用于指定变量的论域范围,函数返回该 隶属度函数对应于坐标矩阵x的函数值矩阵。[ a c ] 决定了 sigmoid型函数的形状,图形关于点( a , 0.5 )中心对称。其表达式如下:

当 a 为正,sigmoid型函数曲线向右开口; a 为负, sigmoid型函数曲线向左开口。这种曲线很适于作 为加有“很”、“很不”等修饰词的语言值的隶属 度函数。利用两个 sigmoid型函数之和或乘积来构 造新的隶属度函数类型可以得到更符合人类语言特 性的一些隶属度函数形状,对应在模糊逻辑工具箱 中提供了相应的函数,可以参见 dsigmf 和 psigmf 函数介绍。

例 建立 sigmoid型隶属度函数,如图所示。

例 不同参数的曲线对比,如图所示。

说明:参数 x 用于指定变量的论域范围,函数返回 该隶属度函数对应于坐标矩阵 x 的函数值矩阵。参 数 a1 、 c1 和 a2 、 c2 分别用于指定两个sigmoid型 函数的形状。新的函数表达式如下:

例 psigmf 型隶属度函数,如图所示。

例 比较两个sigmoid型函数和psigmf函数,如图所示。

说明:参数 x 用于指定变量的论域范围,函数返回 该隶属度函数对应于坐标矩阵 x 的函数值矩阵。此 函数的用法与 psigmf 类似,参数 a1 、 c1 和 a2 、 c2 分别用于指定两个 sigmoid 型函数的形状,构造 得到的新的隶属度函数表达式为:

例 绘制两个sigmoid型函数之差的隶属度函数 曲线,如图所示。

说明: Z 型函数是一种基于样条插值的函数,两个 参数 a 和 b 分别定义了样条插值的起点和终点。当 a < b 的时候,曲线在( a , b )之间是光滑的样条曲 线,在 a 左段为 1 , b 右段为0;当 a > = b 时,曲 线为阶梯 0 ~1 的阶梯函数,跳跃点是( a + b ) / 2 ; 参数 x 用于指定变量的论域范围,函数返回该隶属 度函数对应于坐标矩阵 x 的函数值矩阵。

例 建立 z 型隶属度函数并绘制曲线,如图 所示。

说明: S 型函数是一种基于样条插值的函数,两个 参数 a 和 b 分别定义了样条插值的起点和终点。 当 a < b 的时候,曲线在( a , b )之间是光滑的样 条曲线,在 a 左段为 0 , b 右段为 l ; 当 a > = b 时,曲线为阶梯 0 ~l 的阶梯函数,跳跃点是 ( a + b ) / 2 ;对于相同的输入参数,函数 smf 与 函数 zmf 的图形是左右对称的。参数 x 用于指定 变量的论域范围,函数返回该隶属度函数对应于坐 标矩阵 x 的函数值矩阵。

例 建立 S 型隶属度函数并绘制曲线,如图所示。

说明: n 型函数是 Z 型与 S 型曲线的乘积所得, 由于其形状类似符号兀而得名。 n 型函数也是一种 基于样条曲线的函数。参数 x 用于指定函数的自变 量范围,函数返回该隶属度函数对应于坐标矩阵 x 的函数值矩阵。[ a b c d ]决定函数的形状,在图 中, a 和 b 分别对应曲线下部的左右两个拐点 (脚部) , b 和 c 分别对应曲线上部的左右两个 拐点(肩部)。计算公式如下:

例 建立 Π 形隶属度函数并绘制曲线,如图 所示。

例 不同参数对比,如图所示。




友情链接: 时尚网 总结汇报 幼儿教育 小学教育 初中学习资料网