如何在matlab中将模糊控制系统中的规则转化为数值表

作者:神秘网友 发布时间:2020-10-04 13:31:46

如何在matlab中将模糊控制系统中的规则转化为数值表

如何在matlab中将模糊控制系统中的规则转化为数值表

如何在matlab中将模糊控制系统中的规则转化为数值表
第一步首先要建立一个模糊控制器的规则
主要有两种方式
1 直接list清单的方式构建
2 在rule生成器中填写
本文给出了第一种方式的代码如下

clear all;
close all;
load list %这个地方是装载一个规则表,具体代码最后会附带!
% rulelist=[1 1 1 1;
% 2 2 1 1;
% 3 3 1 1;
% 4 4 1 1;
% 5 5 1 1];
a=newfis(‘fuzzpid’);%创建模糊推理系统结构
a = addvar(a,‘input’,‘e’,0.07580[-1,1]); %Parameter eNH,NM,NL,0,PL,PM,PH
a = addmf(a,‘input’,1,‘NH’,‘trimf’,[-6,-6,-3]);
a = addmf(a,‘input’,1,‘NM’,‘trimf’,[-6,-3,-2]);
a =addmf(a,‘input’,1,‘NL’,‘trimf’,[-3,-1,0]);
a =addmf(a,‘input’,1,‘ZO’,‘trimf’,[-1,0,1]);
a =addmf(a,‘input’,1,‘PL’,‘trimf’,[0,1,3]);
a = addmf(a,‘input’,1,‘PM’,‘trimf’,[2,3,6]);
a = addmf(a,‘input’,1,‘PH’,‘trimf’,[3,6,6]);

a=addvar(a,‘input’,‘ec’,0.610[-1,1]); %Parameter ec
a = addmf(a,‘input’,2,‘NH’,‘trimf’,[-6,-6,-3]);
a = addmf(a,‘input’,2,‘NM’,‘trimf’,[-6,-3,-2]);
a =addmf(a,‘input’,2,‘NL’,‘trimf’,[-3,-1,0]);
a =addmf(a,‘input’,2,‘ZO’,‘trimf’,[-1,0,1]);
a =addmf(a,‘input’,2,‘PL’,‘trimf’,[0,1,3]);
a = addmf(a,‘input’,2,‘PM’,‘trimf’,[2,3,6]);
a = addmf(a,‘input’,2,‘PH’,‘trimf’,[3,6,6]);

a = addvar(a,‘output’,’ kp’,[-3,3]); %Parameter kp
a = addmf(a,‘output’,1,‘NH’,‘trimf’,[-3,-3,-2]);
a = addmf(a,‘output’,1,‘NM’,‘trimf’,[-3,-2,-1]);
a =addmf(a,‘output’,1,‘NL’,‘trimf’,[-2,-1,0]);
a =addmf(a,‘output’,1,‘ZO’,‘trimf’,[-1,0,1]);
a =addmf(a,‘output’,1,‘PL’,‘trimf’,[0,1,2]);
a = addmf(a,‘output’,1,‘PM’,‘trimf’,[1,2,3]);
a = addmf(a,‘output’,1,‘PH’,‘trimf’,[2,3,3]);

a = addvar(a,‘output’,‘ki’,[-3,3]); %Parameter ki
a = addmf(a,‘output’,2,‘NH’,‘trimf’,[-3,-3,-2]);
a = addmf(a,‘output’,2,‘NM’,‘trimf’,[-3,-2,-1]);
a =addmf(a,‘output’,2,‘NL’,‘trimf’,[-2,-1,0]);
a =addmf(a,‘output’,2,‘ZO’,‘trimf’,[-1,0,1]);
a =addmf(a,‘output’,2,‘PL’,‘trimf’,[0,1,2]);
a = addmf(a,‘output’,2,‘PM’,‘trimf’,[1,2,3]);
a = addmf(a,‘output’,2,‘PH’,‘trimf’,[2,3,3]);

a = addvar(a,‘output’,‘kd’,[-3,3]); %Parameter kd
a = addmf(a,‘output’,3,‘NH’,‘trimf’,[-3,-3,-2]);
a = addmf(a,‘output’,3,‘NM’,‘trimf’,[-3,-2,-1]);
a =addmf(a,‘output’,3,‘NL’,‘trimf’,[-2,-1,0]);
a =addmf(a,‘output’,3,‘ZO’,‘trimf’,[-1,0,1]);
a =addmf(a,‘output’,3,‘PL’,‘trimf’,[0,1,2]);
a = addmf(a,‘output’,3,‘PM’,‘trimf’,[1,2,3]);
a = addmf(a,‘output’,3,‘PH’,‘trimf’,[2,3,3]);
rulelist=list;
a=addrule(a,rulelist);
a=setfis(a,‘DefuzzMethod’,‘centroid’);
writefis(a,‘fuzzpid’);

a=readfis(‘fuzzpid’);
figure(1);
plotmf(a,‘input’,1);
figure(2);
plotmf(a,‘input’,2);
figure(3);
plotmf(a,‘output’,1);
figure(4);
plotmf(a,‘output’,2);
figure(5);
plotmf(a,‘output’,3);
figure(6);
plotfis(a);

fuzzy fuzzpid;
showrule(a)
%%附带的7*7的表
7 7 1 7 1 1 1
7 6 1 7 5 1 1
7 5 2 6 7 1 1
7 4 2 6 7 1 1
7 3 3 5 7 1 1
7 2 4 4 6 1 1
7 1 4 4 3 1 1
6 7 1 7 3 1 1
6 6 1 7 5 1 1
6 5 2 6 7 1 1
6 4 3 5 6 1 1
6 3 3 5 6 1 1
6 2 4 4 5 1 1
6 1 5 4 4 1 1
5 7 2 7 4 1 1
5 6 2 6 5 1 1
5 5 2 5 6 1 1
5 4 3 5 6 1 1
5 3 4 4 5 1 1
5 2 5 3 5 1 1
5 1 5 3 4 1 1
4 7 2 6 4 1 1
4 6 2 6 5 1 1
4 5 3 5 5 1 1
4 4 4 4 5 1 1
4 3 5 3 5 1 1
4 2 6 2 5 1 1
4 1 6 2 4 1 1
3 7 3 6 4 1 1
3 6 3 5 4 1 1
3 5 4 4 4 1 1
3 4 5 3 4 1 1
3 3 5 3 4 1 1
3 2 6 2 4 1 1
3 1 7 1 4 1 1
2 7 3 4 1 1 1
2 6 4 4 5 1 1
2 5 5 3 3 1 1
2 4 6 3 3 1 1
2 3 6 2 3 1 1
2 2 6 1 3 1 1
2 1 7 1 1 1 1
1 7 4 4 3 1 1
1 6 4 4 5 1 1
1 5 6 3 7 1 1
1 4 6 2 7 1 1
1 3 6 2 7 1 1
1 2 7 1 6 1 1
1 1 7 1 3 1 1
第二步 建立simulink

如何在matlab中将模糊控制系统中的规则转化为数值表
具体的工具就在常用模块就可以找到,在搜索地方打出fuzzy可以得到模糊模块
如何在matlab中将模糊控制系统中的规则转化为数值表
如何在matlab中将模糊控制系统中的规则转化为数值表
注意!!!需要对使用readfis函数读取一下之前建立的模糊系统
如何在matlab中将模糊控制系统中的规则转化为数值表
第三步 在simulink 中通过 Tools -> System Test -> Launch System Test 进入系统测试界面。
如何在matlab中将模糊控制系统中的规则转化为数值表
进去之后在菜单栏选择 Insert -> Test Element -> Simulink ,选择第二步中建立的模型 fuzzy_model如何在matlab中将模糊控制系统中的规则转化为数值表
选择之间建的simulink模型的路径如何在matlab中将模糊控制系统中的规则转化为数值表

之后首先点test vector,选择new新建二个,命名input1和input2,
设置两个输入变量,因为我们是遍历选择需要将所有的模糊区间选到
我这里面是-6到6每次变化1
如何在matlab中将模糊控制系统中的规则转化为数值表
随后进入测试变量,选择new新建一个outlet
如何在matlab中将模糊控制系统中的规则转化为数值表
对properties画圈的地方设置输入变量和输出变量,最后点运行,等待一到两分钟就行了。
如何在matlab中将模糊控制系统中的规则转化为数值表

最后一步是调取参数表的数据
在command 界面输入:
data_biao=stresults.ResultsDataSet.output;
temp=zeros(169,1);
for i=1:169
temp(i)=data_biao{i}(6);
end
table_data=reshape(temp,13,13);
这样就可以得到你想要的参数表了
我的例子的参数表如下
如何在matlab中将模糊控制系统中的规则转化为数值表

如何在matlab中将模糊控制系统中的规则转化为数值表相关教程

  1. PDF文件如何在线翻译成中文

    PDF文件如何在线翻译成中文 英文PDF文档怎么翻译成中文,这是很多文员朋友比较头疼的一个办公工作,对于一些IT朋友来说,一些说明帮助的文档基本上都是英文格式的PDF文档,对一些英文并不懂的人来说着实心累,那如何解决这一问题呢。小编今天就为大家展示一

  2. FPGA开源项目双目测距(二)之Matlab算法仿真以及图片转txt

    FPGA开源项目:双目测距(二)之Matlab算法仿真以及图片转txt 1.简述 今天完成双目测距项目的第二部分,实现Matlab算法仿真,主要包括图像二值化、计算目标坐标、目标框选以及将图片转为txt用于后面的FPGA算法仿真。Matlab代码工程关注我的公众号:芯王国,

  3. matlab y轴设中间 x轴 y轴 设箭头 输出图像大小 图形对象 句柄

    matlab y轴设中间 x轴 y轴 设箭头 输出图像大小 图形对象 句柄 属性操作 目录 前言 1.绘制带箭头的对象 核心函数:annotation 例:建立从(0,0)到(1,1)的箭头注释对象 2.找到x轴、y轴所对应的标准化坐标 核心函数:gca、get、set 例:输出当前坐标区对象的所有

  4. 翻译如何在Mac OS X中设置文件权限chmod

    翻译:如何在Mac OS X中设置文件权限chmod Mac OS X使用权限来限制对应用程序,文件和文件夹的访问。利用此安全控件可以帮助保护您的数据免遭未经授权的访问。无论您是在公共场所使用Mac还是与其他用户共享Mac,您都可能希望更改文档的权限,以确保数据的机

  5. Matlab scatter/plot绘制图时,单点的'MarkerSize'与空间位置的

    Matlab scatter/plot绘制图时,单点的'MarkerSize'与空间位置的关系 scatter scatter(axes, x, y, sz, ‘Marker’, ‘o’); scatter()函数中参数sz决定’Marker’(即’o’)的标记面积(大小),默认单位是平方磅(points),'o’在坐标轴中的宽度为 s z 1

  6. 一维高斯分布与多维高斯分布及 matlab 实现

    一维高斯分布与多维高斯分布及 matlab 实现 一维高斯分布与多维高斯分布 高斯分布(Gaussian distribution),又称正态分布(Normal distribution)。若随机变量X服从一个数学期望为μ、方差为σ^2 的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的

  7. 如何在复古PPT模板内插入图片

    如何在复古PPT模板内插入图片 大家在制作复古PPT时,为了突显PPT复古的风格时,都会在PPT当中插入大量的有着复古元素的图片。可是有部分小伙伴刚刚接触PPT操作,对于很多操作还不是很了解。下面小编就告诉大家如何在复古PPT模板内插入图片。 步骤如下: 1.大

  8. Matlab图像九宫格基本操作(翻转,镜像等)+位图操作

    Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 这次blog提到的操作对于matlab来说都很基础,而且对于有编程和计算机基础的人来说也很简单,不过我一开始也是对于matlab的语法什么的一知半解,这里把我亲手写的东西push出来,小伙伴们共勉。 废话不多说了