MATLAB模糊逻辑工具箱及函数调用方法
Matlab技术模糊逻辑应用
Matlab技术模糊逻辑应用Matlab技术在模糊逻辑应用中的作用引言:近年来,随着科技的飞速发展,人工智能领域得到了极大的推广和应用。
在这个领域中,模糊逻辑是一种重要的工具,可以描述和处理不确定性和模糊性的问题。
而Matlab技术作为一种强大的计算软件,提供了丰富的工具和函数,为模糊逻辑应用提供了极大的便利。
本文将介绍Matlab技术在模糊逻辑应用中的一些常见方法和技巧。
一、模糊集合与隶属度函数在模糊逻辑中,模糊集合用来描述非二元的现象,它是一个在区间[0,1]上取值的集合,表示某个事物的隶属度。
而隶属度函数则用来描述隶属度与变量之间的关系。
Matlab中提供了一系列用于处理模糊集合和隶属度函数的工具箱,如Fuzzy Logic Toolbox,它包括了模糊集合的定义、运算和可视化等功能。
二、模糊推理模糊推理是模糊逻辑应用的核心部分,它通过利用模糊规则来进行逻辑推理。
在Matlab中,可以使用Fuzzy Logic Toolbox提供的工具和函数来实现模糊推理。
首先,需要定义模糊规则集,然后通过模糊推理机制来根据输入的模糊集合进行推理,并得到相应的输出。
三、模糊控制系统模糊控制系统是模糊逻辑应用中的另一个重要领域,它利用模糊集合和模糊规则来进行控制。
在Matlab中,可以通过Fuzzy Logic Toolbox来设计和实现模糊控制系统。
首先,需要定义输入和输出的模糊集合和隶属度函数,然后定义模糊规则集,最后使用模糊控制器来进行控制。
Matlab提供了一系列的函数和工具来帮助用户进行模糊控制系统的设计、仿真和优化。
四、模糊神经网络模糊神经网络是将模糊逻辑和神经网络相结合的一种方法,它可以用来解决模糊性和非线性问题。
在Matlab中,可以使用Fuzzy Logic Toolbox和Neural Network Toolbox来设计和实现模糊神经网络。
首先,需要定义输入和输出的模糊集合和隶属度函数,然后使用神经网络模型来进行训练和学习。
matlab中mamfis用法
matlab中mamfis用法MATLAB中的MAMFIS是一种基于模糊逻辑的工具箱,它可以用于建立模糊推理系统。
MAMFIS的使用可以帮助用户处理模糊信息,使得在处理模糊问题时更加高效和准确。
下面将介绍MAMFIS的用法。
1. 创建MAMFIS系统在MATLAB中,可以使用命令fis = mamfis()来创建一个空的MAMFIS系统。
在创建MAMFIS系统时,需要指定输入和输出变量的名称和范围。
例如,可以使用以下命令来创建一个具有两个输入变量和一个输出变量的MAMFIS系统:fis = mamfis('Name','MyMAMFIS');fis = addInput(fis,[0 10],'Name','Input1');fis = addInput(fis,[0 10],'Name','Input2');fis = addOutput(fis,[0 10],'Name','Output1');2. 添加模糊规则在创建MAMFIS系统后,需要添加模糊规则。
可以使用命令fis = addRule(fis,rule)来添加规则。
其中,rule是一个结构体,包含了模糊规则的信息。
例如,可以使用以下命令来添加一个模糊规则:rule = struct('input', [1 2], 'output', 1, 'connection', 1, 'weight', 1); fis = addRule(fis, rule);3. 设置模糊变量和模糊集在MAMFIS系统中,需要设置模糊变量和模糊集。
可以使用命令fis = addMF(fis, var, mf)来添加模糊集。
其中,var是模糊变量的名称,mf是模糊集的信息。
方法二用MATLAB的模糊逻辑工具箱(Fuzzytoolbox)实现.
⽅法⼆⽤MATLAB的模糊逻辑⼯具箱(Fuzzytoolbox)实现.⽅法⼆:⽤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,等。
方法二用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 模糊工具箱操作
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模糊控制工具箱使用
模糊控制介绍及Matlab模糊控制工具箱使用目录•一、模糊控制的产生•二、模糊逻辑的理论基础•三、模糊控制Matlab工具箱示例•四、模糊控制的基本思想•五、模糊控制器的基本结构•六、模糊控制器的优缺点一、模糊控制的产生在传统控制领域,对于明确系统有强而有力的控制能力,即被控系统的动态信息越详细,越能达到精确控制的目的。
然而,在多变量、非线性的复杂系统中,往往难以完全描述系统的动态信息。
此时,传统的控制理论则显得无能为力,而有经验的专家或工作人员仍能根据长期实践观察和操作经验进行有效控制。
据此引申,是否可将人的操作经验总结为若干条控制规则以避开复杂模型的建立过程?模糊控制最重要的特征是反应人们的经验及推理规则,而这些经验和推理规则是通过自然语言来表达的,如“水温上升过快,则关小燃气阀”。
在控制系统初期,由于对系统缺乏了解,控制效果可能不好,但若干次探索后终能实现预期的控制,这就是经验对模糊控制系统的重要性。
由于模糊控制实质上是用计算机去执行人的控制策略,因而可以避开复杂模型的建立,对人们关于某个控制问题的成功和失败经验加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。
PS:“模糊”是人类感知万物,获取知识,思维推理,决策实施的重要特征。
“模糊”比“清晰”所拥有的信息量更大,更符合客观世界。
二、模糊逻辑的理论基础模糊逻辑是指模仿人脑不确定性的概念判断和推理思维,对于定性的知识和经验,借助隶属度概念、模糊集合,来处理模糊关系。
模糊逻辑实质上是要对模糊性对象进行精确描述和处理。
模糊逻辑的目的是将一个输入空间映射到一个输出空间,主要要靠一系列的if-then规则。
这些规则包含变量和描述这些变量的形容词,被平行评估,因此它们的顺序不重要。
在进行模糊推理之前,先要定义好输入和输出变量以及描述它们的形容词。
模糊推理的流程如下图所示。
模糊推理流程2.1、模糊集合普通情况下,元素a属于集合A(1)或不属于集合A(0),如下图所示,星期一和星期三都是工作日,而苹果和星星则不是。
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模糊逻辑工具箱函数说明:本文档中所列出的函数适用于MATLAB5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档。
1.GUI工具Anfisedit 打开ANFIS编辑器GUIFuzzy 调用基本FIS编辑器Mfedit 隶属度函数编辑器Ruleedit 规则编辑器和语法解析器Ruleview 规则观察器和模糊推理方框图Surfview 输出曲面观察器2.隶属度函数dsigmf 两个sigmoid型隶属度函数之差组成的隶属度函数gauss2mf 建立两边型高斯隶属度函数gaussmf 建立高斯曲线隶属度函数gbellmf 建立一般钟型隶属度函数pimf 建立Π型隶属度函数psigmf 通过两个sigmoid型隶属度函数的乘积构造隶属度函数smf 建立S-型隶属度函数sigmf 建立Sigmoid型隶属度函数trapmf 建立梯形隶属度函数trimf 建立三角形隶属度函数zmf 建立Z-型隶属度函数3.FIS数据结构管理addmf 向模糊推理系统(FIS)的语言变量添加隶属度函数addrule 向模糊推理系统(FIS)的语言变量添加规则addvar 向模糊推理系统(FIS)添加语言变量defuzz 对隶属度函数进行反模糊化evalfis 完成模糊推理计算evalmf 通过隶属度函数计算gensurf 生成一个FIS输出曲面getfis 得到模糊系统的属性mf2mf 在两个隶属度函数之间转换参数newfis 创建新的FISparsrule 解析模糊规则plotfis 绘制一个FISplotmf 绘制给定语言变量的所有隶属度函数的曲线readfis 从磁盘装入一个FISrmmf 从FIS中删除某一语言变量的某一隶属度函数rmvar 从FIS中删除某一语言变量setfis 设置模糊系统的属性showfis 以分行的形式显示FIS结构的所有属性showrule 显示FIS的规则writefis 保存FIS到磁盘上4.先进技术anfis Sugeno型模糊推理系统(FIS)的训练程序(只适用于MEX)fcm 模糊C均值聚类genfis1 不使用数据聚类方法从数据生成FIS结构genfis2 使用减法聚类方法从数据生成FIS结构subclust 用减法聚类方法寻找聚类中心5.Simulink仿真块fuzblock Simulink模糊逻辑控制器库sffis 用于Simulink的模糊推理S-函数6.演示defuzzdm 反模糊化方法fcmdemo FCM聚类显示(二维)fuzdemos 列出所有模糊逻辑工具箱的演示程序gasdemo 使用子聚类节省燃料的ANFIS演示juggler 带规则观察器的弹球游戏器invkine 单机械臂倒立摆运动irisfcm FCM聚类显示(四维)noisedm 自适应消除噪声slbb 球和棒控制(Simulink)slcp 倒立摆控制(Simulink)sltank 水位控制(Simulink)sltankrule 带规则观察器的水位控制(Simulink)sltbu 卡车入库(只有Simulink方式)。
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的模糊逻辑控制系统设计工具提供了一种用户友好的可视化界面,用于设计和编辑模糊逻辑控制系统。
MATLAB模糊逻辑工具箱函数
基本FIS编辑器函数fuzzy格式 fuzzy %弹出未定义的基本FIS编辑器fuzzy(fismat) %使用fuzzy('tipper'),弹出下图FIS编辑器。
编辑器是任意模糊推理系统的高层显示,它允许你调用各种其它的编辑器来对其操作。
此界面允许你方便地访问所有其它的编辑器,并以最灵活的方式与模糊系统进行交互。
方框图:窗口上方的方框图显示了输入、输出和它们中间的模糊规则处理器。
单击任意一个变量框,使选中的方框成为当前变量,此时它变成红色高亮方框。
双击任意一个变量,弹出隶属度函数编辑器,双击模糊规则编辑器,弹出规则编辑器。
菜单项:FIS编辑器的菜单棒允许你打开相应的工具,打开并保存系统。
·File菜单包括:New mamdani FIS … 打开新mamdani型系统;New Sugeno FIS …打开新Sugeno型系统;Open from disk …从磁盘上打开指定的.fis文件系统;Save to disk 保存当前系统到磁盘上的一个.fis文件上;Save to disk as … 重命名方式保存当前系统到磁盘上;Open from workspace … 从工作空间中指定的FIS结构变量装入一个系统;Save to workspace …保存系统到工作空间中当前命名的FIS结构变量中;Save to workspace as …保存系统到工作空间中指定的FIS结构变量中;Close windows 关闭GUI;·Edit菜单包括:Add input 增加另一个输入到当前系统中;Add output 增加另一个输出到当前系统中;Remove variable 删除一个所选的变量;Undo 恢复当前最近的改变;Edit MFs …调用隶属度函数编辑器;Edit rules …调用规则编辑器;Edit anfis …只对单输出Sugeno型系统调用编辑器;View rules …调用规则观察器;View surface … 调用曲面观察器。
Matlab模糊工具箱的使用
模糊控制由于不依赖对象的数学模型而受到广泛的重视,计算机仿真是研究模糊控制系统的重要手段之一。
由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有力的工具,特别是在Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很大的方便。
由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很高的,仿真结果是可靠的。
在Simulink环境下对控制系统进行建模是非常方便的,而模糊控制系统与常见控制系统的结构基本相同,仅仅是控制器不同。
所以,对模糊控制系统的建模关键是对模糊控制器的建模。
Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入fuzzy命令就可进入模糊控制器编辑环境。
一、模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。
其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。
打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:“fuzzy”命令,弹出模糊推理系统编辑器界面,如下图所示。
首先确定输入、输出变量的个数,在Edit菜单中,选Add variableÆinput,加入新的输入input;选Add variableÆoutput,加入新的输出output。
修改名称二、隶属度函数编辑器(Mfedit)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
双击任一个输入或输出模块,进入成员函数编辑界面。
使用Matlab进行模糊逻辑分析的技巧
使用Matlab进行模糊逻辑分析的技巧引言:在现代科学中,逻辑分析在决策、控制系统和模糊推理等领域发挥着重要的作用。
模糊逻辑是一种能够处理复杂和不确定的问题的有效工具。
而Matlab作为一种功能强大的数学软件,也提供了丰富的工具和函数来支持模糊逻辑的建模和分析。
本文将介绍使用Matlab进行模糊逻辑分析的一些技巧和实例。
一、安装模糊逻辑工具箱Matlab提供了自带的模糊逻辑工具箱,可以通过Matlab的插件管理器进行安装。
打开Matlab后,在工具栏中选择"Add-Ons",然后在搜索框中输入"模糊逻辑工具箱",点击搜索按钮,选择合适的版本进行安装。
安装完成后,即可在工具箱中找到并使用模糊逻辑相关的函数和工具。
二、建立模糊逻辑系统使用Matlab进行模糊逻辑分析的第一步是建立一个模糊逻辑系统。
可以使用命令"fuzzy"创建一个模糊逻辑系统对象,然后使用该对象进行后续的分析。
例如,创建一个简单的三角形隶属函数的模糊逻辑系统对象:```matlabfis = fuzzyfis = addInput(fis,[0 10],'Name','input1')fis = addOutput(fis,[0 20],'Name','output1')fis = addMF(fis,'input1','trimf',[2 5 7])fis = addMF(fis,'output1','trimf',[4 10 16])```上述代码创建了一个输入变量input1和一个输出变量output1,并添加了三角形隶属函数。
通过这种方式,可以根据实际问题的需求建立模糊逻辑系统。
三、设置模糊规则在模糊逻辑系统中,模糊规则是描述输入和输出之间关系的关键。
如何使用Matlab进行模糊推理
如何使用Matlab进行模糊推理引言在现实生活中,我们往往需要处理不确定性和模糊性的问题。
而模糊推理作为一种处理模糊信息的方法,在人工智能和信息处理领域得到了广泛应用。
Matlab作为一个强大的数学建模和仿真工具,也提供了丰富的功能来进行模糊推理。
本文将介绍如何使用Matlab进行模糊推理的基本方法和技巧。
一、Matlab中的模糊逻辑工具箱Matlab提供了专门的工具箱来支持模糊逻辑的建模和推理。
用户可以使用这些工具箱中的函数和工具来构建模糊系统、进行模糊推理和进行系统性能评估。
在使用之前,需要先安装模糊逻辑工具箱,并通过调用相关函数将其加载到Matlab环境中。
二、模糊逻辑建模1. 变量和隶属函数的定义在进行模糊逻辑建模时,首先需要定义模糊变量和相应的隶属函数。
模糊变量表示模糊信息的输入或输出,而隶属函数则用来描述变量的模糊隶属度。
在Matlab中,可以通过调用相关函数来创建和定义模糊变量和隶属函数。
例如,使用fis工具箱中的newfis函数可以创建一个新的模糊系统对象,使用addvar 函数可以向模糊系统中添加新的模糊变量,使用addmf函数可以向模糊变量中添加新的隶属函数。
2. 模糊规则的定义模糊规则用来描述输入变量与输出变量之间的关系,其中包含了变量之间的模糊推理过程。
在Matlab中,可以使用addrule函数来定义和添加模糊规则。
该函数可以接受不同形式的输入,例如模糊规则的标准形式、模糊规则的表格形式等。
三、模糊推理1. 模糊推理的基本原理在进行模糊推理时,需要根据已有的输入变量和模糊规则来计算输出变量的模糊值。
在Matlab中,可以使用evalfis函数来进行模糊推理。
该函数接受输入变量、模糊规则和一些其他参数作为输入,返回输出变量的模糊值。
2. 基于模糊逻辑的决策制定通过模糊推理,我们可以根据已知的输入变量和模糊规则来计算输出变量的模糊值。
然而,模糊值通常需要转化为实际的决策结果。
利用Matlab进行模糊逻辑与控制的技巧与方法
利用Matlab进行模糊逻辑与控制的技巧与方法随着科技的不断进步和发展,模糊逻辑与控制作为一种新兴的控制方法受到了越来越多的关注和应用。
它可以模拟人类的思维方式,将模糊的输入转化为准确的输出结果,用于解决现实生活中的各种问题。
而Matlab作为一种强大的科学计算软件,不仅能够提供快速的数值计算能力,还为模糊逻辑与控制的分析和建模提供了便捷和高效的工具。
一、Matlab中的模糊逻辑工具箱Matlab提供了专门的模糊逻辑工具箱(Fuzzy Logic Toolbox),该工具箱集成了一系列的函数和工具,方便用户进行模糊逻辑的建模和仿真。
用户可以使用这些函数和工具来创建模糊输入、模糊输出和模糊规则,以及进行模糊推理和模糊控制系统的设计。
二、模糊逻辑建模的步骤在使用Matlab进行模糊逻辑建模时,一般需要按照以下步骤进行:1. 确定模糊变量和它们的隶属函数:模糊变量是用来描述问题中的模糊概念的变量,它可以是输入变量或输出变量。
隶属函数用来描述模糊变量的隶属关系,可以是高斯型、三角型、梯形型等不同形状的函数。
2. 确定模糊规则库:模糊规则库是一组模糊规则的集合,它描述了输入变量和输出变量之间的关系。
每个模糊规则由若干个前提条件和一个结论组成,前提条件是对输入变量的模糊化描述,结论是对输出变量的模糊化描述。
3. 进行模糊推理:模糊推理是根据输入变量和模糊规则,通过模糊推理引擎将模糊输入转化为模糊输出的过程。
Matlab提供了多种推理方法,如模糊最大化、模糊最小化等。
4. 进行模糊解模糊:模糊解模糊是将模糊输出转化为具体的输出值的过程。
常用的解模糊方法有模糊平均法、模糊加权法等。
5. 进行模糊控制系统的仿真和优化:使用Matlab提供的仿真和优化工具,对设计的模糊控制系统进行测试、分析和优化。
三、实例演示下面以一个简单的温度控制系统为例,演示如何利用Matlab进行模糊逻辑与控制的建模和仿真。
假设我们需要设计一个温度控制器,使室内温度始终保持在一个设定的温度范围内。
Matlab中的模糊控制器设计与调试方法
Matlab中的模糊控制器设计与调试方法介绍在控制系统中,模糊控制器是一种基于模糊逻辑的控制方法,它可以通过模糊的规则来对非线性系统进行建模和控制。
Matlab作为一款功能强大的数学软件,在模糊控制器的设计与调试方面提供了丰富的工具和函数。
本文将为您介绍在Matlab中如何设计和调试模糊控制器,以及相关的方法和技巧。
一、模糊控制器的基本原理在了解Matlab中的模糊控制器设计与调试方法之前,我们先来简要了解一下模糊控制器的基本原理。
模糊控制器是通过将模糊规则应用于输入与输出之间的模糊逻辑推理来实现控制的。
它的输入和输出可以使用模糊集合表示,通过计算输入与模糊规则之间的相似度来确定输出结果。
模糊控制器的核心是模糊规则库,其中包含了一系列的模糊规则,用于描述输入与输出之间的关系。
二、Matlab中的模糊控制器设计1. 基于模糊系统工具箱的模糊控制器设计Matlab提供了强大的模糊系统工具箱,使得模糊控制器的设计非常简洁高效。
在使用模糊系统工具箱之前,我们需要先定义输入和输出的模糊集合,并构建模糊规则库。
然后,使用模糊系统工具箱提供的函数,如fuzzy关键字和fuzzysystem 函数,可以快速地创建和配置模糊控制器。
最后,使用evalfis函数对模糊控制器进行评估和测试,以验证其性能。
2. 基于自定义函数的模糊控制器设计除了使用模糊系统工具箱之外,Matlab还提供了自定义函数的灵活性,使得开发者可以根据具体需求,自行设计和实现模糊控制器。
在这种方法中,我们需要编写一系列的自定义函数来描述输入输出的模糊集合和模糊规则,以及模糊推理和模糊解模糊过程。
通过调用这些自定义函数,可以实现对模糊控制器的快速创建和配置。
三、Matlab中的模糊控制器调试方法1. 参数调整在设计模糊控制器时,参数的选择对控制效果有着重要的影响。
Matlab提供了多种参数调整方法,如试错法、经验法和优化算法等。
通过改变参数的取值范围和步长,可以寻求最佳的控制效果。
模糊控制系统工具箱函数
实验一:模糊控制系统工具箱函数一、实验目的1.通过实验熟悉并掌握各类模糊控制系统工具箱函数的用法2.通过实验熟悉并掌握典型隶属度函数的Matlab仿真3.通过实验熟悉并掌握Matlab软件的利用方式二、实验内容1.按照给定参数编制模糊推理系统数据结构管理功能函数及整个“tipper”模糊推理系统的Matlab仿真程序。
2. 运行所编制的程序,取得各功能函数的仿真结果,完成FIS的求解。
3. 按照给定参数编制取得各类典型隶属度函数的Matlab仿真程序。
4. 运行所编制的程序,取得隶属度函数仿真曲线,并研究参数转变对曲线特性的影响,完成典型隶属度函数的仿真研究。
三、实验步骤1. 针对“tipper”模糊推理系统,编制相应的数据结构管理功能函数的Matlab仿真程序。
2. 运行所编制的程序,取得各功能函数的仿真结果。
3.按照给定参数编制整个“tipper”模糊推理系统的仿真程序,并求解在给定作用下FIS 的输出。
4. 熟悉Matlab软件,编制取得各类典型隶属度函数的Matlab仿真程序。
5. 运行所编制的程序,取得典型隶属度函数的仿真曲线。
6.改变隶属度函数的参数,观测参数的转变对仿真曲线的影响。
7.分析实验结果,完成实验报告。
四、实验参数要求1.在tipper模糊系统中,'input'1即'service'的范围为[0 10],且分为'poor','good','excellent'三个模糊集,3个模糊集均采用'gaussmf'型隶属函数,区间别离为[ 0],[ 5],[ 10];input(2)即'food '的范围为[0 10],且分为'rancid ','delicious '2个模糊集,2个模糊集均采用'trapmf'型隶属函数,区间别离为[-2 0 1 3],[7 9 10 12];output(1)即'tip''的范围为[0 30],且分为' cheap ',' average ',' generous '三个模糊集,3个模糊集均采用' trimf '型隶属函数,区间别离为[0 5 10],[10 15 20],[20 25 30]④求解输入别离为[1 2]和[3 5;2 7]时系统的输出2.Gaussian型隶属度函数σ=2,c=53. gbellmf隶属度函数 a=2, b=4,c=64. Sigmoidal隶属度函数 a1=2, c1=4; a2=2, c2=4;5. trapezoid隶属度函数a=1, b=5, c=7, d=86. triangle隶属度函数 a=3, b=6, c=87. Z形隶属度函数 a=3, b=78.按照给定参数,设计自概念隶属函数的Matlab仿真程序①以年龄为论域,取x=[0,150],设计模糊集“年轻”的隶属函数的Matlab仿真程序②设计一个三角形隶属函数,按[-6,6]范围分为七个品级,成立一个模糊系统,用来表示{负大,负中,负小,零,正小,正中,正大}。
MATLAB模糊逻辑工具箱函数
plotfis( )
图形显示模糊推理系统的输入—输出特性
.
15
1 .创建新的模糊推理系统函数newfis( ) 该函数用于创建一个新的模糊推理系统,模糊推理
系统的特性可由函数的参数指定,其参数个数可达7个 。调用格式为
fisMat=newfis(‘fisName’,fisType,andMethod,orMethod, impMethod,aggMethod,defuzzMethod)
.
16
例:>>fisMat=newfis(‘mysys’);getfis(fisMat) 显示:Name = mysys
Type = mamdani NumInputs = 0 InLabels = NumOutputs = 0 OutLabels = NumRules = 0 AndMethod = min OrMethod = max ImpMethod = min AggMethod = max DefuzzMethod = centroid
.
20
例 >> fisMat=readfis('tipper')
或 >>fisMat=readfis('tipper'); getfis(fisMat,'type') >>fisMat=readfis('tipper'); getfis(fisMat,'input',1); >>fisMat=readfis('tipper'); getfis(fisMat,'input',1,'name') >>fisMat=readfis('tipper'); getfis(fisMat,'input',1,'mf',2); >>fisMat=readfis('tipper'); getfis(fisMat,'input',1,'mf',2,'name')
MATLAB模糊逻辑工具箱函数 ppt课件
2021/3/26
MATLAB模糊逻辑工具箱函数 ppt 课件
17
2. 从磁盘中加载模糊推理系统函数readfis( ) 调用格式
fisMat=readfis(‘’)
2021/3/26
MATLAB模糊逻辑工具箱函数 ppt 课件
18
例如利用以下命令可加载一个MATLAB自带的关于“小 费”问题的模糊推理系统tipper.fis。
5. 独立运行的模糊推理机 在用户完成模糊逻辑系统的设计后,可以将设计结 果以ASCII码文件保存;利用模糊逻辑工具箱提供的模 糊推理机,可以实现模糊逻辑系统的独立运行或者作 为其他应用的一部分运行。
2021/3/26
MATLAB模糊逻辑工具箱函数 ppt 课件
6
5.1.2 模糊推理系统的基本类型 在模糊系统中,模糊模型的表示主要有两类:一类
2021/3/26
MATLAB模糊逻辑工具箱函数 ppt 课件
21
4. 将模糊推理系统以矩阵形式保存在内存中的数据 写入磁盘文件函数writefis( )
模糊推理系统在内存中的数据是以矩阵形式存储的,
其对应的矩阵名为fisMat。当需要将模糊推理系统的 数据写入磁盘文件时,就可利用writefis( )函数。其调 用格式为
图5-1 基于标准模型课的件 模糊逻辑系统原理图
8
2 基于高木——关野(Takagi——Sugeno)模型的 模糊逻辑系统
高木——关野模糊逻辑系统是一类较为特殊的模 糊逻辑系统,其模糊规则不同于一般的模糊规则形式。
在高木——关野模糊逻辑系统中,采用如下形式 的模糊规则:
IF x1 is A1 and x2 is A2 and…and xn is An THEN
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4 MATLAB模糊工具箱介绍
Fuzzy Logic工具箱功能非常强大,利用它人们可以方便地建立模糊逻辑推理系统,并对其进行测试。
这里我们主要介绍它提供的5个图形化的系统设计工具。
4.1模糊推理系统编辑器
启动模糊推理系统编辑器(FISE, Fuzzy Inference System Editer)的方法有两种,在MATLAB的命令窗口中输入“fuzzy”命令或者依次点击MATLAB软件左下角的“Start”,“Toolboxes”,“Fuzzy Logic”也可打开FISE,然后双击FIS Editor Viewer项。
FISE的图形界面如下图14示。
图1FISE图形界面
4.2隶属函数编辑器
在MATLAB的命令界面输入“mfedit”命令或者在模糊推理系统编辑器的“File” “Edit/Membership Functions”或者双击图14中红色矩形,都可打开隶属函数编辑器。
通过该编辑器可以设定和变更输入/输出语言变量的各自的语言值的隶属函数的类型及参数。
如下图15所示。
图2隶属函数编辑器界面
4.3模糊规则编辑器
在MATLAB的命令界面中输入“ruleedit”命令或者利用模糊推理系统编辑
器的“File” “Edit/Rules”或双击图2里红色框旁的黑色的矩形框,都可以打开模糊规则编辑器。
通过该编辑器可以添加、修改和删除必要的模糊规则,其空白界面如下图3所示。
图3模糊规则编辑器界面
4.4模糊规则观察器
在MATLAB的命令界面输入“ruleview”命令,或者在前面介绍的三种编辑器中的任一个中选择相应的“View/Rules”,均可打开模糊规则观察器。
在模糊规则观察器中,以图形形式描述了模糊推理系统的推理过程,如下图4所示。
图4模糊规则浏览器界面
4.5模糊推理输入输出变量特性观察器
在MATLAB的命令窗口中输入“surfview”命令,或者在各个编辑器窗口选择相应菜单“View/Surface”,都可打开模糊推理输入输出曲面浏览器。
该窗口用三维图形展示出输入与输出变量的曲面特性,如下图5所示。
图5输入与输出变量的曲面特性观察窗口
4.6 模糊推理系统的调用方法
利用上面所介绍的编辑器建立好模型后,首先要保存所建立的模糊推理系统,然后我们就可以利用实验数据对模型进行测试了。
通过模糊推理系统编辑器的“File”→“Export”→“To Workspace”或者“To File”对建立的模糊推理系统进行保存。
且前者是把系统导出保存到MATLAB的工作空间,可以直接调用;后者是把系统导出另存到一个文件件里。
调用的时候,调用方法如下:(1)把工具箱中建立的模型导出到工作空间中,同时需要命名,例命名FXCZ01;对于存储到文件夹里的模糊推理系统,先打开Fuzzy Logic工具箱,然后“File”→“Import”→“From File”找到文件单击即可;
(2)新建M文件,输入下面命令:
in=[ ]; %“[ ]”中的数据就是要输入模型的实验数据。
out= evalfis (in,FXCZ01) %“evalfis”是执行模糊推理计算函数。
(3)保存M文件并命名;
(4)运行M文件程序并在matlab主界面中观察结果。