MATLAB模糊逻辑工具箱函数

合集下载

MATLAB模糊逻辑工具箱函数[精编文档]

MATLAB模糊逻辑工具箱函数[精编文档]
4. 将模糊推理系统以矩阵形式保存在内存中的数据写入磁盘文件函数writefis( ) 模糊推理系统在内存中的数据是以矩阵形式存储的,其对应的矩阵名为fisMat。当需要将模糊推理系统的数据写入磁盘文件时,就可利用writefis( )函数。其调用格式为 writefis(fisMat) writefis(fisMat,’filename’) writefis(fisMat,’filename’,’dialog’) 例: >>fisMat=newfis(’tipper’);writefis(fisMat,’my_ file’)
2. 从磁盘中加载模糊推理系统函数readfis( ) 调用格式 fisMat=readfis(‘filemame’)
例如利用以下命令可加载一个MATLAB自带的关于“小费”问题的模糊推理系统tipper.fis。 >>fisMat=readfis('tipper');getfis(fisMat); 结果显示: Name = tipper Type = mamdani NumInputs = 2 InLabels = service food NumOutputs = 1 OutLabels = tip NumRules = 3 AndMethod = min OrMethod = max ImpMethod = min AggMethod = max DefuzzMethod = centroid
3. 支持模糊逻辑中的高级技术 • 自适应神经模糊推理系统(ANFIS,Adaptive Neural Fuzzy Inference System); • 用于模式识别的模糊聚类技术; • 模糊推理方法的选择,用户可在广泛采用的 Mamdani型推理方法和 Sugeno型推理方法两者之间选择。

用 Matlab 的 Fuzzy 工具箱实现模糊控制

用 Matlab 的 Fuzzy 工具箱实现模糊控制

用 Matlab 的 Fuzzy 工具箱实现模糊控制Matlab, Fuzzy, 模糊控制, 工具箱用Matlab 中的Fuzzy 工具箱做一个简单的模糊控制,流程如下:1、创建一个FIS (Fuzzy Inference System ) 对象,a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod)一般只用提供第一个参数即可,后面均用默认值。

2、增加模糊语言变量a = addvar(a,'varType','varName',varBounds)模糊变量有两类:input 和output。

在每增加模糊变量,都会按顺序分配一个index,后面要通过该index 来使用该变量。

3、增加模糊语言名称,即模糊集合。

a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每个模糊语言名称从属于一个模糊语言。

Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。

参数mfType 即隶属度函数(Membership Functions),它可以是Gaussmf、trimf、trapmf等,也可以是自定义的函数。

每一个语言名称也会有一个index,按加入的先后顺序得到,从 1 开始。

4、增加控制规则,即模糊推理的规则。

a = addrule(a,ruleList)其中ruleList 是一个矩阵,每一行为一条规则,他们之间是ALSO 的关系。

假定该FIS 有N 个输入和M 个输出,则每行有N+M+2 个元素,前N 个数分别表示N 个输入变量的某一个语言名称的index,没有的话用0 表示,后面的M 个数也类似,最后两个分别表示该条规则的权重和个条件的关系,1 表示AND,2 表示OR。

MATLAB中的模糊逻辑应用技巧

MATLAB中的模糊逻辑应用技巧

MATLAB中的模糊逻辑应用技巧绪论近年来,随着人工智能技术的不断发展与应用,模糊逻辑作为一种弥补了传统二值逻辑的不足的方法,被广泛应用于各个领域。

MATLAB作为一种功能强大的数学计算软件,提供了丰富的工具箱,使得模糊逻辑的建模和分析变得更加方便和高效。

本文将重点介绍MATLAB中模糊逻辑的应用技巧。

一、模糊集合的定义与表示在MATLAB中,模糊集合可以通过使用fuzzy工具箱来定义和表示。

在定义模糊集合时,我们需要明确模糊集合的隶属度函数以及对应的隶属度值。

可以使用trimf函数、trapmf函数、gaussmf函数等来定义隶属度函数的形状,并通过给定参数来确定具体的形状。

例如,我们可以使用trimf函数来定义一个三角隶属度函数,代码如下:```matlabx = 0:0.1:10;y = trimf(x, [3 5 7]);plot(x, y);```通过上述代码,我们可以绘制出一个在[3, 5, 7]范围内的三角形隶属度函数。

二、模糊关系的建立与描述在MATLAB中,可以使用fuzzy工具箱来建立和描述模糊关系。

模糊关系可以通过关联隶属度函数的模糊集合来定义,可以是矩阵形式或规则形式。

矩阵形式的模糊关系可以通过编写代码实现。

例如,我们可以建立一个三维矩阵表示的模糊关系,代码如下:```matlabx1 = 0:0.1:10;x2 = 0:0.1:10;x3 = 0:0.1:10;R = zeros(length(x1), length(x2), length(x3));for i = 1:length(x1)for j = 1:length(x2)for k = 1:length(x3)R(i, j, k) = min(trimf(x1(i), [2 3 4]), trimf(x2(j), [5 6 7]), trimf(x3(k), [8 9 10]));endendend```通过上述代码,我们可以建立一个三维矩阵表示的模糊关系,其中每个元素表示了一个具体的隶属度值。

MATLAB模糊逻辑工具箱函数

MATLAB模糊逻辑工具箱函数
6
二、利用模糊逻辑工具箱建立模糊推理系统
基于高木——关野(Takagi——Sugeno)模 型的模糊逻辑系统 高木 —— 关野模糊逻辑系统是一类较为特 殊的模糊逻辑系统,其模糊规则不同于一般的 模糊规则形式。 在高木 —— 关野模糊逻辑系统中,采用如 下形式的模糊规则: IF x1 is A1 and x2 is A2 and…and xn is An THEN y c x 其 中 Ai(i=1,2,…,n) 是 输 入 模 糊 语 言 值 , ci(i=1,2,…,n)是真值参数。

2
一、 MATLAB模糊逻辑工具箱简介
针对模糊逻辑尤其是模糊控制的迅速推广应 用,MathWorks公司在其MATLAB版中添加 了Fuzzy Logic工具箱。该工具箱由长期从事 模糊逻辑和模糊控制研究与开发工作的有关 专家和技术人员编制。MATLAB Fuzzy Logic工具箱以其功能强大和方便易用的特点 得到了用户的广泛欢迎。模糊逻辑的创始人 Zadeh教授称赞该工具箱“在各方面都给人 以深刻的印象,使模糊逻辑成为智能系统的 概念与设计的有效工具。”
3
一、 MATLAB模糊逻辑工具箱简介
在模糊逻辑工具箱中包含五个图形化的系 统设计工具,这五个设计工具是: • 模糊推理系统编辑器,该编辑器用于建 立模糊逻辑系统的整体框架,包括输入与输 出数目、去模糊化方法等; • 隶属度函数编辑器,用于通过可视化手 段建立语言变量的隶属度函数; • 模糊推理规则编辑器; • 系统输入输出特性曲面测览器; • 模糊推理过程浏览器。
建立一般的钟型隶属度函数 建立型隶属度函数 建立sigmiod型的隶属度函数
trapmf( )
trimf( ) zmf( ) mf2mf( )

方法二用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现.

方法二用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现.

方法二:用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现(陈老师整理)一、模糊逻辑推理系统的总体特征模糊控制由于不依赖对象的数学模型而受到广泛的重视,计算机仿真是研究模糊控制系统的重要手段之一。

由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有力的工具,特别是在Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很大的方便。

由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很高的,仿真结果是可靠的。

在Simulink环境下对PID控制系统进行建模是非常方便的,而模糊控制系统与PID控制系统的结构基本相同,仅仅是控制器不同。

所以,对模糊控制系统的建模关键是对模糊控制器的建模。

Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入Fuzzy就可进入模糊控制器编辑环境。

二、Matlab模糊逻辑工具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。

其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。

打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:fuzzy 命令,弹出模糊推理系统编辑器界面,如下图所示。

因为我们用的是两个输入,所以在Edit菜单中,选Add variable… ->input,加入新的输入input,如下图所示。

选择input(选中为红框),在界面右边文字输入处键入相应的输入名称,例如,温度输入用tmp-input, 磁能输入用 mag-input,等。

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

matlab 模糊工具箱操作

matlab 模糊工具箱操作

num=20;den=[8 6 1];[a1,b1,c1,d]=tf2ss(num,den); T=0.01;h=T;N=500;R=1.5*ones(1,N);%pide=0;de=0;ie=0;kp=4;ki=0.5;kd=1.5;x=[0;0];for k=1:Nu1=-(kp*e+ki*ie+kd*de);k0=a1*x+b1*u1;k1=a1*(x+h*k0/2)+b1*u1;k2=a1*(x+h*k1/2)+b1*u1;k3=a1*(x+h*k2)+b1*u1;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u1;e1=e;e=y-R(1,k);de=(e-e1)/T;ie=e*T+ie;yy2(1,k)=y;enda=newfis('simple1');a=addvar(a,'input','e',[-5 5]);a=addmf(a,'input',1,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'input',1,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'input',1,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'input',1,'ZE','trimf',[-1,0,1]);a=addmf(a,'input',1,'PS','trapmf',[0,1,2,3]);a=addmf(a,'input',1,'PM','trapmf',[2,3,4,5]);a=addmf(a,'input',1,'PB','trapmf',[4,5,5,5]);a=addvar(a,'input','de',[-5 5]);a=addmf(a,'input',2,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'input',2,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'input',2,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'input',2,'ZE','trimf',[-1,0,1]);a=addmf(a,'input',2,'PS','trapmf',[0,1,2,3]);a=addmf(a,'input',2,'PM','trapmf',[2,3,4,5]);a=addmf(a,'input',2,'PB','trapmf',[4,5,5,5]);a=addvar(a,'output','kp',[-5 5]);a=addmf(a,'output',1,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'output',1,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'output',1,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'output',1,'ZE','trimf',[-1,0,1]);a=addmf(a,'output',1,'PS','trapmf',[0,1,2,3]);a=addmf(a,'output',1,'PM','trapmf',[2,3,4,5]);a=addmf(a,'output',1,'PB','trapmf',[4,5,5,5]);rulelist1=[1 1 7 1 1;1 2 7 1 1;1 3 6 1 1;1 4 6 1 1;1 5 5 1 1;1 6 4 1 1;1 7 4 1 1;2 1 7 1 1;2 2 7 1 1;23 6 1 1;245 1 1;2 5 5 1 1;26 4 1 1;2 73 1 1;3 1 6 1 1;3 2 6 1 1;3 3 6 1 1;345 1 1;3 5 4 1 1;36 3 1 1;3 7 3 1 1;4 1 6 1 1;4 2 6 1 1;4 35 1 1;4 4 4 1 1;4 5 3 1 1;46 2 1 1;4 7 2 1 1;5 1 5 1 1;5 2 5 1 1;5 3 4 1 1;5 4 3 1 1;5 5 3 1 1;56 2 1 1;5 7 2 1 1;6 1 5 1 1;6 2 4 1 1;6 3 3 1 1;6 4 2 1 1;6 5 2 1 1;6 6 2 1 1;6 7 1 1 1;7 1 4 1 1;7 2 4 1 1;7 3 2 1 1;7 4 2 1 1;7 5 2 1 1;7 6 1 1 1;7 7 1 1 1]; a=addrule(a,rulelist1);b=newfis('simple2');b=addvar(b,'input','e',[-5 5]);b=addmf(b,'input',1,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'input',1,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'input',1,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'input',1,'ZE','trimf',[-1,0,1]);b=addmf(b,'input',1,'PS','trapmf',[0,1,2,3]);b=addmf(b,'input',1,'PM','trapmf',[2,3,4,5]);b=addmf(b,'input',1,'PB','trapmf',[4,5,5,5]);b=addvar(b,'input','de',[-5 5]);b=addmf(b,'input',2,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'input',2,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'input',2,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'input',2,'ZE','trimf',[-1,0,1]);b=addmf(b,'input',2,'PS','trapmf',[0,1,2,3]);b=addmf(b,'input',2,'PM','trapmf',[2,3,4,5]);b=addmf(b,'input',2,'PB','trapmf',[4,5,5,5]);b=addvar(b,'output','ki',[-5 5]);b=addmf(b,'output',1,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'output',1,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'output',1,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'output',1,'ZE','trimf',[-1,0,1]);b=addmf(b,'output',1,'PS','trapmf',[0,1,2,3]);b=addmf(b,'output',1,'PM','trapmf',[2,3,4,5]);b=addmf(b,'output',1,'PB','trapmf',[4,5,5,5]);rulelist2=[1 1 1 1 1;1 2 1 1 1;1 3 2 1 1;1 4 2 1 1;1 5 3 1 1;1 6 4 1 1;1 7 4 1 1;2 1 1 1 1;2 2 1 1 1;23 2 1 1;24 3 1 1;25 3 1 1;26 4 1 1;2 7 4 1 1;3 1 1 1 1;3 2 2 1 1;3 3 3 1 1;34 3 1 1;35 4 1 1;36 5 1 1;3 7 5 1 1;4 1 2 1 1;4 2 2 1 1;4 3 3 1 1;4 4 4 1 1;45 5 1 1;46 6 1 1;4 7 6 1 1;5 1 2 1 1;5 2 3 1 1;5 3 4 1 1;5 4 5 1 1;5 5 5 1 1;56 6 1 1;5 7 7 1 1;6 1 4 1 1;6 2 4 1 1;6 3 5 1 1;6 4 5 1 1;6 5 6 1 1;6 67 1 1;6 7 7 1 1;7 1 4 1 1;7 2 4 1 1;7 3 5 1 1;7 4 6 1 1;7 5 6 1 1;7 6 7 1 1;7 7 7 1 1]; b=addrule(b,rulelist2);c=newfis('simple3');c=addvar(c,'input','e',[-5 5]);c=addmf(c,'input',1,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'input',1,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'input',1,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'input',1,'ZE','trimf',[-1,0,1]);c=addmf(c,'input',1,'PS','trapmf',[0,1,2,3]);c=addmf(c,'input',1,'PM','trapmf',[2,3,4,5]);c=addmf(c,'input',1,'PB','trapmf',[4,5,5,5]);c=addvar(c,'input','de',[-5 5]);c=addmf(c,'input',2,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'input',2,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'input',2,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'input',2,'ZE','trimf',[-1,0,1]);c=addmf(c,'input',2,'PS','trapmf',[0,1,2,3]);c=addmf(c,'input',2,'PM','trapmf',[2,3,4,5]);c=addmf(c,'input',2,'PB','trapmf',[4,5,5,5]);c=addvar(c,'output','kd',[-5 5]);c=addmf(c,'output',1,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'output',1,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'output',1,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'output',1,'ZE','trimf',[-1,0,1]);c=addmf(c,'output',1,'PS','trapmf',[0,1,2,3]);c=addmf(c,'output',1,'PM','trapmf',[2,3,4,5]);c=addmf(c,'output',1,'PB','trapmf',[4,5,5,5]);rulelist3=[1 1 1 1 1;1 2 1 1 1;1 3 1 1 1;1 4 1 1 1;1 5 1 1 1;1 6 1 1 1;1 7 1 1 1;2 1 2 1 1;2 2 2 1 1;23 2 1 1;24 2 1 1;25 2 1 1;26 2 1 1;2 7 2 1 1;3 1 3 1 1;3 2 3 1 1;3 3 3 1 1;34 3 1 1;35 3 1 1;36 3 1 1;3 7 3 1 1;4 1 4 1 1;4 2 3 1 1;4 3 3 1 1;4 4 3 1 1;45 3 1 1;46 3 1 1;4 7 4 1 1;5 1 4 1 1;5 2 4 1 1;5 3 4 1 1;5 4 4 1 1;5 5 4 1 1;56 4 1 1;5 7 4 1 1;6 1 5 1 1;6 2 5 1 1;6 3 5 1 1;6 4 5 1 1;6 5 5 1 1;6 6 5 1 1;6 7 4 1 1;7 1 6 1 1;7 2 6 1 1;7 3 6 1 1;7 4 6 1 1;7 5 6 1 1;7 6 6 1 1;7 7 6 1 1]; c=addrule(c,rulelist3);figure(2);gensurf(c)e=0;de=0;ie=0;x=[0;0];ke=30;kd=20;kup=5;kui=0.3;kud=0.7;for k=1:Ne1=ke*e;de1=kd*de;if e1>=5e1=5;elseif e1<=-5e1=-5;endif de1>=5de1=5;elseif de1<=-5de1=-5;endin=[e1 de1];u1=evalfis(in,a);u2=evalfis(in,b);u3=evalfis(in,c);kp=u1/10+kup;ki=u2/10+kui;kd=u3/10+kud;u=-(kp*e+ki*ie+kd*de);k0=a1*x+b1*u;k1=a1*(x+h*k0/2)+b1*u;k2=a1*(x+h*k1/2)+b1*u;k3=a1*(x+h*k2)+b1*u;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u;yy(1,k)=y;e1=e;e=y-R(1,k);de=(e-e1)/T;ie=ie+T*e;endkk=[1:N]*T;figure(1);plot(kk,R,'k',kk,yy(1,:),'r',kk,yy2(1,:),'g'); gtext('FSA-PID');gtext('PID');num=20;den=[1.6,4.4,1];[a1,b,c,d]=tf2ss(num,den);x=[0;0];T=0.01;h=T;N=1000;%PID CONTROLe=0;de=0;ie=0;kp=5;ki=1.3;kd=0.1;for k=1:Nuu(1,k)=-(kp*e+ki*de+kd*ie); u=uu(1,k);k0=a1*x+b*u;k1=a1*(x+h*k0/2)+b*u;k2=a1*(x+h*k1/2)+b*u;k3=a1*(x+h*k2)+b*u;x=x+(k0+2*k1+2*k2+k3)*h/6;y=c*x+d*u;t(1,k)=k*T;if k<=300R(1,k)=t(1,k)/3;elseif k<=700R(1,k)=1.0;elseif k<=1000R(1,k)=(10-t(1,k))/3;ende1=e;e=y-R(1,k);de=(e-e1)/T;ie=e*T+ie;yy1(1,k)=y;enda=newfis('simple');a=addvar(a,'input','e',[-6 6]);a=addmf(a,'input',1,'NB','trapmf',[-6,-6,-5,-3]); a=addmf(a,'input',1,'NS','trapmf',[-5,-3,-2,0]);a=addmf(a,'input',1,'ZR','trimf',[-2,0,2]);a=addmf(a,'input',1,'PS','trapmf',[0,2,3,5]);a=addmf(a,'input',1,'PB','trapmf',[3,5,6,6]);a=addvar(a,'input','de',[-6 6]);a=addmf(a,'input',2,'NB','trapmf',[-6,-6,-5,-3]); a=addmf(a,'input',2,'NS','trapmf',[-5,-3,-2,0]);a=addmf(a,'input',2,'ZR','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trapmf',[0,2,3,5]);a=addmf(a,'input',2,'PB','trapmf',[3,5,6,6]);a=addvar(a,'output','u',[-3 3]);a=addmf(a,'output',1,'NB','trapmf',[-3,-3,-2,-1]); a=addmf(a,'output',1,'NS','trimf',[-2,-1,0]);a=addmf(a,'output',1,'ZR','trimf',[-1,0,1]);a=addmf(a,'output',1,'PS','trimf',[0,1,2]);a=addmf(a,'output',1,'PB','trapmf',[1,2,3,3]);rr=[5 5 4 4 3;5 4 4 3 3;4 4 3 3 2;4 3 3 2 2;3 3 2 2 1]; r1=zeros(prod(size(rr)),3);k=1;for i=1:size(rr,1)for j=1:size(rr,2)r1(k,:)=[i,j,rr(i,j)];k=k+1;endend[r,s]=size(r1);r2=ones(r,2);rulelist=[r1,r2];a=addrule(a,rulelist);e=0;de=0;ke=40;kd=1.5;ku=1;for k=1:Ne1=ke*e;de1=kd*de;if e1>=6e1=6;elseif e1<=-6e1=-6;endif de1>=6de1=6;elseif de1<=-6de1=-6;endin=[e1 de1];uu(1,k)=ku*evalfis(in,a); u=uu(1,k);k0=a1*x+b*u;k1=a1*(x+h*k0/2)+b*u;k2=a1*(x+h*k1/2)+b*u;k3=a1*(x+h*k2)+b*u;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c*x+d*u;t(1,k)=k*T;if k<=300R(1,k)=t(1,k)/3;elseif k<=700R(1,k)=1.0;elseif k<=1000R(1,k)=(10-t(1,k))/3;ende1=e;e=y-R(1,k);de=(e-e1)/T;yy(1,k)=y;endkk=[1:N]*T;figure(1);plot(kk,R,'k',kk,yy,'k',kk,yy1,'r'); gtext('FUZZY');gtext('n');gtext('PID');。

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。

关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。

Matlab中的模糊逻辑控制方法

Matlab中的模糊逻辑控制方法

Matlab中的模糊逻辑控制方法引言模糊逻辑控制(FLC)是一种常用的控制方法,在很多实际应用中得到了广泛的应用。

Matlab作为一种功能强大的数学计算和工程仿真软件,提供了丰富的工具和函数来支持模糊逻辑控制的设计和实现。

本文将介绍Matlab中的模糊逻辑控制方法及其应用。

一、模糊逻辑控制的基本概念模糊逻辑控制是一种基于模糊逻辑原理的控制方法,它可以处理不确定性信息和模糊概念,适用于那些难以建立精确数学模型的控制系统。

模糊逻辑控制系统由四个基本部分组成:模糊化、推理、解模糊和规则库。

1.1 模糊化模糊化是将输入量从实际值转化为模糊集合的过程。

在Matlab中,可以使用fuzzifier函数将实际输入映射到模糊集合上。

模糊集合可以通过一些参数来描述,如三角形型、梯形型、高斯型等。

1.2 推理推理是根据模糊集合的规则进行推导,得到系统的输出。

在Matlab中,可以使用inference函数进行推理。

推理的方法有三种:基于规则的推理、基于模糊集合的推理和基于模型的推理。

根据应用的需求和系统的复杂程度,可以选择不同的推理方法。

1.3 解模糊解模糊是将模糊输出转化为实际值的过程。

在Matlab中,可以使用defuzzifier 函数进行解模糊。

常用的解模糊方法有:最大值法、平均值法、面积法等。

1.4 规则库规则库是模糊逻辑控制系统的核心,它包含了一系列的模糊规则,用来描述输入和输出之间的关系。

在Matlab中,可以使用fuzzy规则对象来定义规则库。

规则库的设计是模糊逻辑控制系统设计中的关键一步,直接影响系统的性能和稳定性。

二、Matlab中的模糊逻辑控制工具箱Matlab提供了专门的工具箱,用于支持模糊逻辑控制系统的设计和实现。

这个工具箱包含了一些常用的函数和工具,能够帮助用户更加方便快捷地进行模糊逻辑控制系统的设计和仿真。

2.1 模糊逻辑控制系统设计工具Matlab的模糊逻辑控制系统设计工具提供了一种用户友好的可视化界面,用于设计和编辑模糊逻辑控制系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.
10
5.1.3 模糊逻辑系统的构成 前面讨论了模糊逻辑系统的基本类型,标准型
模糊逻辑系统应用最为广泛。在MATLAB模糊逻辑 工具箱中主要针对这一类型的模糊逻辑系统提供了 分析和设计手段,但同时对高木一关野模糊逻辑系 统也提供了一些相关函数。下面将以标准型模糊逻 辑系统作为主要讨论对象。
.
11
构造一个模糊逻辑系统,首先必须明确其主要组成 部分。一个典型的模糊逻辑系统主要由如下几个部分 组成:
(1)输入与输出语言变量,包括语言值及其隶属度 函数;
(2)模糊规则; (3)输入量的模糊化方法和输出变量的去模糊化方 法; (4)模糊推理算法。
.
12
针对模糊逻辑系统的以上主要构成,在MATLAB 模糊逻辑工具箱中构造一个模糊推理系统有如下步骤:
(1)模糊推理系统对应的数据文件,其后缀为.fis, 用于对该模糊系统进行存储、修改和管理;
.
5
4. 集成的仿真和代码生成功能 模糊逻辑工具箱不但能够实现Simulink的无缝连接, 而且通过 Real-Time Workshop能够生成ANSI C源代 码,从而易于实现模糊系统的实时应用。 5. 独立运行的模糊推理机 在用户完成模糊逻辑系统的设计后,可以将设计结 果以ASCII码文件保存;利用模糊逻辑工具箱提供的模 糊推理机,可以实现模糊逻辑系统的独立运行或者作 为其他应用的一部分运行。
.
7
1 基于标准模型的模糊逻辑系统 在标准型模糊逻辑系统中,模糊规则的前件和后件
均为模糊语言值,即具有如下形式:
IF x1 is A1 and x2 is A2 and…and xn is An THEN y is B
其中Ai(i=1,2,…,n)是输入模糊语言值,B是输出模糊语言值。
基于标准模型的模糊逻辑系统的框图如图5-1。图 中的模糊规则库由若干“IF——THEN”规则构成。模 糊推理机在模糊推理系统中起着核心作用,它将输入 模糊集合按照模糊规则映射成输出模糊集合。它提供 了一种量化专家语言信息和在模糊逻辑原则下系统地 利用这类语言信息的一般化辑工具箱简介
1.1 模糊逻辑工具箱的功能特点 1.易于使用 模糊逻辑工具箱提供了建立和测试模糊逻辑系 统的一整套功能函数,包括定义语言变量及其隶 属度函数、输入模糊推理规则、整个模糊推理系 统的管理以及交互式地观察模糊推理的过程和输 出结果。
.
3
2. 提供图形化的系统设计界面 在模糊逻辑工具箱中包含五个图形化的系统设计工
(2)确定输入、输出语言变量及其语言值; (3)确定各语言值的隶属度函数,包括隶属度函数 的类型与参数; (4)确定模糊规则; (5)确定各种模糊运算方法,包括模糊推理方法、 模糊化方法、去模糊化方法等。
.
13
5.2 利用模糊逻辑工具箱建立模糊推理系统
5.2.1 模糊推理系统的建立、修改与存储管理 前面讨论了模糊推理系统的主要构成部分,即
MATLAB模糊逻辑
工具箱函数
❖ 1 MATLAB模糊逻辑工具箱简介 ❖ 2 利用模糊逻辑工具箱建立模糊推理系统 ❖ 3 MATLAB模糊逻辑工具箱的图形用户界面 ❖ 4 基于Simulink的模糊逻辑的系统模块
.
1
针对模糊逻辑尤其是模糊控制的迅速推广应用, MathWorks公司在其MATLAB版中添加了Fuzzy Logic 工具箱。该工具箱由长期从事模糊逻辑和模糊控制研 究与开发工作的有关专家和技术人员编制。 MATLAB Fuzzy Logic工具箱以其功能强大和方便易 用的特点得到了用户的广泛欢迎。模糊逻辑的创始人 Zadeh教授称赞该工具箱“在各方面都给人以深刻的 印象,使模糊逻辑成为智能系统的概念与设计的有效 工具。”
.
6
5.1.2 模糊推理系统的基本类型 在模糊系统中,模糊模型的表示主要有两类:一类
是模糊规则的后件是输出量的某一模糊集合,如NB, PB等,由于这种表示比较常用,且首次由Mamdani采 用,因而称它为模糊系统的标准模型或Mamdani模型 表示;另一类是模糊规则的后件是输入语言变量的函 数,典型的情况是输入变量的线性组合。由于该方法 是日本学者高木(Takagi)和关野(Sugeno)首先提出 来的,因此通常称它为模糊系统的Takagi-Sugeno(高 木-关野)模型,或简称为Sugeno模型。
.
8
图5-1 基于标准模型的模糊逻辑系统原理图
2 基于高木——关野(Takagi——Sugeno)模型的
模糊逻辑系统
高木——关野模糊逻辑系统是一类较为特殊的模
糊逻辑系统,其模糊规则不同于一般的模糊规则形式。
在高木——关野模糊逻辑系统中,采用如下形式 的模糊规则:
IF x1 is A1 and x2 is A2 and…and xn is An THEN
具,这五个设计工具是: • 模糊推理系统编辑器,该编辑器用于建立模糊逻辑
系统的整体框架,包括输入与输出数目、去模糊化方 法等;
• 隶属度函数编辑器,用于通过可视化手段建立语言 变量的隶属度函数;
• 模糊推理规则编辑器; • 系统输入输出特性曲面测览器; • 模糊推理过程浏览器。
.
4
3. 支持模糊逻辑中的高级技术 • 自 适 应 神 经 模 糊 推 理 系 统 ( ANFIS , Adaptive Neural Fuzzy Inference System); • 用于模式识别的模糊聚类技术; • 模糊推理方法的选择,用户可在广泛采用的 Mamdani型推理方法和 Sugeno型推理方法两者之间选 择。
n
其 中 Ai(i=1,2,…,n) 是 输 入 模 糊 语 言 值 , ci(i=1,2,y… i,1nc)ixi
是真值参数。
.
9
可以看出,高木-关野模糊逻辑系统的输出量 是精确值。这类模糊逻辑系统的优点是输出量可用 输入值的线性组合来表示,因而能够利用参数估计 方法来确定系统的参数ci(i=1,2,…,n);同时,可以应 用线性控制系统的分析方法来近似分析和设计模糊 逻辑系统。其缺点是规则的输出部分不具有模糊语 言值的形式,因此不能充分利用专家的控制知识, 模糊逻辑的各种不同原则在这种模糊逻辑系统中应 用的自由度也受到限制。
相关文档
最新文档