如何利用matlab将模糊逻辑转化为查询表

如何利用matlab将模糊逻辑转化为查询表,第1张

第一步:利用matlab模糊控制工具箱设计模糊控制器。

1、在matlab命令窗口中输入 fuzzy ,产生如下窗口。

2、确定模糊控制器结构,即根据具体的系统确定输入、输出量。

这斗册旅里我们可以选取标准的二维控制结构,即输入为误差e和误差变化ec,输出为控制量u。输入变量的添加通过 Edit ->Add Variable ->Input 实现。

3、语言值及隶属函数的确定。

首先我们要确定描述输入输出变量语言值的模糊子集,如{NB,NM,NS,ZE,PS,PM,PB},并设置输入输出变量的论域,例如我们设置误差E、误差变化EC的论域为[-6 6],控制量U的论域为[-10 10];然后为模糊语言变量选取相应的隶属度函数。通过 Edit ->Membership Functions 打开隶属度函数编辑器,然后分别对输入输出变量定义论域范围,添加隶属函数,以E为例,设置论域范围为[-6 6],添加隶属函数的个数为7。(注:隶属度函数编辑器初始时已为每个变量定义了3个隶属函数,再通过 Edit ->Add MFs 添加隶属函数时,个数选择4即可)

4、模糊控制规则的制定。

对于我们这个二维控制结构以及相应的输入模糊集,我们可以制定49条模糊控制规则。

5、解模糊。

模糊控制器的输出量是一个模糊集合,通过解模糊化方法判决出一个确切的精确量,解模糊化方法很多,我们这里选取重心法。

6、保存建立的模糊姿绝控制器。

File ->Export ->To File,文件名为 fuzzy_control。

第二步:建立Simulink模型。

1、在matlab命令窗口中输入simulink,产生如下窗口。

2、新建模糊控制器模型,样式如下。

3、在matlab命令窗口下输入 fuzzy = readfis('fuzzy_control') ,将之前建立的模糊控制器加载到工作空间,并将Fuzzy Logic Contrtoller的参数设置为fuzzy。

4、保存该模型,命名为 fuzzy_model

第三步:系统测试界面的设置。

1、通过 Tools ->System Test ->Launch System Test 进入系统测试界面。

2、添加测试模型。

鼠标选中Main Test ,菜单栏 Insert ->Test Element ->Simulink ,选择第二步中建立的模型 fuzzy_model 。

3、变量定义。

在Test Vectors 项里定义两个测试向量,变量名分别为 input1、input2,input1 = [-6:1:6], input2 = [-6:1:6];在Test Variables 里定义测试变量,变量名为output。

4、变量映射。

把测试向量input1、input2分别映射到模糊控制器的输入口 in1、in2,做为输入测试信号。把测试变量 output 映射到模糊控制器输出口out1。设置后的界面如下:

输入测试向量到模糊模型输入口映射:

5、测试数据保存。

在测试界面点Save Results项,设置如下:

6、运行测试,注意在Main Test(169 Iterations)(169次迭代,运算代价),等待测试结束。

第四步:模糊控制查询表的生成

1、系统测试结果保存在 stresults.ResultsDataSet.output 中,为169*1 cell的单元数组。(注:单元cell为 [n*1 double] 结构,表示系统被测试了n次)。

2、在matlab命令窗口下输入 test_data = stresults.ResultsDataSet.output ,将测试结果另存在变量 test_data 中。

3、测试结果格式转换。

由于所建的二维查询表为13行13列,所需的数据应该为13*13 double数组,但因为test_data为 169*1 cell 的单元数组,无法直接作为表格数据输入,因此需先进行格式转空凳换。

在matlab命令窗口下输入 table_data = Cell2Array( test_data ,  1 , 13 , 13 ) ,调用Cell2Array函数,取每个单元数组中的第一行元素,即第一次测试数据,返回结果保存在 table_data 中。

源码如下:

4、新建二维查询表模型,样式如下:

5、点开二维查询表进行如下设置:

6、点 Edit 按钮,即可查看所生成的表格。

分为两类:功能型工具箱和领域型工具箱。

功能型工具箱主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件实时交互功能,能用于多种学科。

领域型工具箱是专业性很强的。如图像处理工具箱(Image Processing Toolbox)、控制工具箱(Control Toolbox)、信号处理工具箱(Signal Processing Toolbox)等。下面,将MATLAB工具箱内所包含的主要内容做简要介绍:

1) 图像处理工具箱(Image Processing Toolbox)。

* 二维滤波器设计和滤波

* 图像恢复增强

* 色彩、集合及形态 *** 作

* 二维变换

* 图像分析和统计

可由结构图直接生成可应用的C语言源代码。

2)控制系统工具箱(Control System Toolbox)。

鲁连续系统设计和离散系统设计

* 状态空间和传递函数

* 模型转换

* 频域响应:Bode图、Nyquist图、Nichols图

* 时域响应:冲击响应、阶跃响应、斜波响应等

* 根轨迹、极点配置、LQG

3)财政金融工具箱(FinancialTooLbox)。

* 成本、利润分析,市场灵敏度分析

* 业务量分析及优化

* 偏差分析

* 资金流量估算

* 财务报表

4)频率域系统辨识工具箱(Frequency Domain System ldentification Toolbox

* 辨识具有未知延迟的连续和离散系统

* 计算饥敏幅值/相位、零点/极点的置信区间

* 设计周期激励信号、最小峰值、最优能量诺等

5)模糊逻辑工具箱(Fuzzy Logic Toolbox)。

* 友好的交互设计界面

* 自适应神经—模糊学习、聚类以及Sugeno推理

* 支持SIMULINK动态仿真

* 可生成C语言源代码用于实时应用

(6)高阶谱分析工具箱(Higher—Order SpectralAnalysis Toolbox

* 高阶谱估计

* 信号中非线性特征的检测和刻画

* 延时估计

* 幅值和相位重构

* 阵列信号处理

* 谐波重构

(7) 通讯工具箱(Communication Toolbox)。

令提供100多个函数和150多个SIMULINK模块用于通讯系统的仿真和分析

——信号编码

——调制解调

——滤波器和均衡器设计

——通道模型

——同步

(8)线性矩阵不等式控制工具箱(LMI Control Toolbox)。

* LMI的基本用途

* 基于GUI的LMI编辑器

* LMI问题的有效解法

* LMI问题解决方案

(9)模型预测控制工具箱(ModelPredictive Control Toolbox

* 建模、辨识及验证

* 支持MISO模型和MIMO模型

* 阶跃响应和状态空间模型

(10)u分析与综合工具箱(u-Analysis and Synthesis Toolbox)

* u分析与综合

* H2和H无穷大最优综合

* 模型降阶

* 连续和离散系统

* u分析与综合理论

(11)神经网络工具箱(Neursl Network Toolbox)。

* BP,Hopfield,Kohonen、自组织、径向基函数等网络

* 竞争、线性、Sigmoidal等传递烂悉枝函数

* 前馈、递归等网络结构

* 性能分析及应用

(12)优化工具箱(Optimization Toolbox)。

* 线性规划和二次规划

* 求函数的最大值和最小位

* 多目标优化

* 约束条件下的优化

* 非线性方程求解

(13)偏微分方程工具箱(Partial DifferentialEquation Toolbox)。

* 二维偏微分陆冲方程的图形处理

* 几何表示

* 自适应曲面绘制,

* 有限元方法

(14)鲁棒控制工具箱(Robust Control Toolbox)。

* LQG/LTR最优综合

* H2和H无穷大最优综合

* 奇异值模型降阶

* 谱分解和建模

(15)信号处理工具箱(signal Processing Toolbox)

* 数字和模拟滤波器设计、应用及仿真

* 谱分析和估计

* FFT,DCT等变换

* 参数化模型

(16)样条工具箱(SPline Toolbox)。

* 分段多项式和B样条

* 样条的构造

* 曲线拟合及平滑

* 函数微分、积分

(17)统计工具箱(Statistics Toolbox)。

* 概率分布和随机数生成

* 多变量分析

* 回归分析

* 主元分析

* 假设检验

(18)符号数学工具箱(Symbolic Math Toolbox)。

* 符号表达式和符号矩阵的创建

* 符号微积分、线性代数、方程求解

* 因式分解、展开和简化

* 符号函数的二维图形

* 图形化函数计算器

(19)系统辨识工具箱(SystEm Identification Toolbox)

* 状态空间和传递函数模型

* 模型验证

* MA,AR,ARMA等

* 基于模型的信号处理

* 谱分析

(20)小波工具箱(Wavelet Toolbox)。

* 基于小波的分析和综合

* 图形界面和命令行接口

* 连续和离散小波变换及小波包

* 一维、二维小波

* 自适应去噪和压缩

面用一个简单的例子作介绍:

(本例不是特别针对实现什么功能,只是为了介绍方便)

第一部分 创建一个模糊逻辑(.fis文件)

第一步:打开模糊推理系统编辑器

步骤:

在Commond Window 键入拍慎fuzzy

回车

打开如下窗口,既模糊推理系统编辑器

第二步:使用模糊推理系统编辑器

本例用到两个输入,两个输出,但默认是一个输人,一个输出

步骤:

1、添加一个输入

添加一个输出

得如下图

2、选择Input、output(选中为红框),在Name框里修改各输入的名称

并将And method 改为prod,将Or method 改为 probor

提示:在命名时’_’在显示时为下标,可从上图看出。

第三步:使用隶属函数编辑器

该编辑器提供宽贺链一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。

步骤:

1、双击任何一个输入量(In_x、In_y)或输出量打开隶属度函数编辑器。

2、在左下处Range和Display Range处添加取值范围,本例中In_x和In_y的取值范围均为[0 10], Out_x和Out_y的取值范围均为[0 1]

3、默认每个输入输出参数中都只有3个隶属度函数,本例中每个输入输出参数都需要用到五个,其余几个需要自己添加:

选中其中一个输入输出参数

点击Edit菜单,选Add MFS…打开下列对话框

将MF type设置为trimf(三角形隶属度函数曲线,当然你慎孙也需要选择其他类型)

将Number of MFs 设置为2

点击OK按钮

同样给其他三个加入隶属度函数

4、选中任何一个隶属度函数(选中为红色),在Name 中键入名称,在Type中选择形状,在Params中键入范围,然后回车如下图:

5、关闭隶属函数编辑器

第四步:使用规则编辑器

通过隶规则编辑器来设计和修改“IF...THEN”形式的模糊控制规则。由该编辑器进行模糊控制规则的设计非常方便,它将输入量各语言变量自动匹配,而设计者只要通过交互式的图形环境选择相应的输出语言变量,这大大简化了规则的设计和修改。另外,还可为每条规则选择权重,以便进行模糊规则的优化。

步骤:

1、打开规则编辑器

点击Edit菜单,选Rules…

打开下了对话框

2、添加规则

选中IXL2,IYL2,OXL2,none(表示不被选中任何隶属度函数),and选项,权重Weight均设为1,然后点击Add rule 添加规则,同理添加其他规则。

下图为添加所有role后:

3、关闭规则编辑器

第五步:保存并查看结果

步骤:

1、保存

保存为Test.fis

2、View->Rules打开Rule Viewer

3、View->Surface打开Surface Viewer

第二部分:将模糊逻辑添加到Simulink中

第一步:创建一个Simulink文件

步骤:

1、打开Simulink

2、点击新建按钮建立一个新的.mdl文件

第二步:添加模糊逻辑

步骤:

1、在Simulink Library Brower 的搜索框内键入Fuzzy Logic Controller找到Fuzzy Logic Controller,并将其拖拽到新建的mdl文件中

2、双击Fuzzy Logic Controller,打开如下对话框,比在其内部键入Test

3、关闭对话框

第三步:添加其他模块

如下图,都是常用模块,请自己添加

第四步:保存并运行

步骤:

1、保存为Test.mdl

2、初始化模糊逻辑控制器,即在Command Window中键入Test = readfis('Test.fis'),回车

1、运行Test.mdl

这里可以比较一下结果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12415087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存