一、简介

MATLAB软件有提供一个模糊推理系统编辑器,利用模糊工具箱在matlab命令窗口输入Fuzzy命令进入模糊控制编辑环境

二、主要步骤

1、接受输入变量

2、输入变量模糊化

3、利用模糊规则进行推理得出结论

4、综合步骤3利用结论从模糊隶属度得到实际的输出值

5、输出结果

三、MATLAB运行结果

 输入 e 的模糊语言变量及其隶属度函数:

 输入 ec 的模糊语言变量及其隶属度函数:

 

 输出结果:

四、总结

在本次实验中设置了两个模糊输入变量(e和ec),一个模糊输出变量u 。在规则库中建立了7x7=49条规则,模糊规则中第一个和第二个为输入,第三个数表输出,后俩个数分别是规则权重和AND OR选项。模糊变量的隶属函数分别设置成了“Z型”、“三角形”、“S型”

五、代码部分

%模糊控制器设计
a=newfis('fuzzf'); %创建新的模糊推理系统 %输入1
f1=;
a=addvar(a,'input','e',[-*f1,*f1]);
%添加 e 的模糊语言变量
a=addmf(a,'input',,'NB','zmf',[-*f1,-*f1]);
%添加 e 的模糊语言变量的隶属度函数(z型)
a=addmf(a,'input',,'NM','trimf',[-*f1,-*f1,-]);
%隶属度函数为三角形
a=addmf(a,'input',,'NS','trimf',[-*f1,-*f1,*f1]);
a=addmf(a,'input',,'Z','trimf',[-*f1,,*f1]);
a=addmf(a,'input',,'PS','trimf',[-*f1,*f1,*f1]);
a=addmf(a,'input',,'PM','trimf',[,*f1,*f1]);
a=addmf(a,'input',,'PB','smf',[*f1,*f1]); %输入2
f2=;
a=addvar(a,'input','ec',[-*f2,*f2]);
%添加 ec 的模糊语言变量
a=addmf(a,'input',,'NB','zmf',[-*f2,-*f2]);
a=addmf(a,'input',,'NM','trimf',[-*f2,-*f2,-]);
a=addmf(a,'input',,'NS','trimf',[-*f2,-*f2,*f2]);
a=addmf(a,'input',,'Z','trimf',[-*f2,,*f2]);
a=addmf(a,'input',,'PS','trimf',[-*f2,*f2,*f2]);
a=addmf(a,'input',,'PM','trimf',[,*f2,*f2]);
a=addmf(a,'input',,'PB','smf',[*f2,*f2]); %输出
f8=1.5;
a=addvar(a,'output','u',[-*f8,*f8]);
%添加 u 的模糊语言变量
a=addmf(a,'output',,'NB','zmf',[-*f8,-*f8]);
a=addmf(a,'output',,'NM','trimf',[-*f8,-*f8,-]);
a=addmf(a,'output',,'NS','trimf',[-*f8,-*f8,*f8]);
a=addmf(a,'output',,'Z','trimf',[-*f8,,*f8]);
a=addmf(a,'output',,'PS','trimf',[-*f8,*f8,*f8]);
a=addmf(a,'output',,'PM','trimf',[,*f8,*f8]);
a=addmf(a,'output',,'PB','smf',[*f8,*f8]); %规则库
rulelist=[ ; %编辑模糊规则,后俩个数分别是规则权重和AND OR选项
;
;
;
;
;
; ;
;
;
;
;
;
; ;
;
;
;
;
;
; ;
;
;
;
;
;
; ;
;
;
;
;
;
; ;
;
;
;
;
;
; ;
;
;
;
;
;
;
]; a=addrule(a,rulelist); %添加模糊规则函数
showrule(a) %显示模糊规则函数
a1=setfis(a,'DefuzzMethod','centroid'); %设置解模糊方法
writefis(a1,'fuzzf'); %保存模糊系统
a2=readfis('fuzzf'); %从磁盘读出保存的模糊系统
disp('fuzzy Controller table:e=[-3,+3],ec=[-3,+3]');%显示矩阵和数组内容 %推理
Ulist=zeros(,); %全零矩阵
for i=:
for j=:
e(i)=-+i;
ec(j)=-+j;
Ulist(i,j)=evalfis([e(i),ec(j)],a2); %完成模糊推理计算
end
end
% Ulist=ceil(Ulist) %朝正无穷方向取整
Ulist %朝正无穷方向取整 %画出模糊系统
figure(); plotfis(a2);
figure();plotmf(a,'input',);
figure();plotmf(a,'input',);
figure();plotmf(a,'output',);

MATLAB实现模糊控制的更多相关文章

  1. 用MATLAB生成模糊控制离线查询表

    实时采样得到的数据经过模糊化处理后输入机器,通过查询模糊规则表便可得到应有的输出模糊量,从而避免了近似推理过程.实际应用中,特别是在控制系统较为简单而采用单片机控制时,常常采用这种查表法. 模糊控制表 ...

  2. 如何将Matlab中“模糊控制设计器”的隶属度函数导出图片(figure)

    如何将Matlab中"模糊控制设计器"的隶属度函数导出图片(figure)详情参考matlab官方帮助手册:plotmf()函数https://www.mathworks.com/ ...

  3. 使用MATLAB生成模糊控制的离线查询表

    1.打开模糊控制工具箱,编辑输入输出变量的隶属度函数和模糊控制规则,如下图所示,导出为fuzzy_control.fis文件. 2.打开Simulink模块,建立下图所示的系统框图,两输入,一输出,处 ...

  4. matlab中使用fuzzy工具箱

    4步教你学会使用matlab模糊控制工具箱 Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化.模糊推理及反模糊化运算,只需要设定相应参数,就可以很 ...

  5. 如何使用Simulink模糊控制

    在用这个控制器之前,需要用readfis指令将fuzzy1.fis加载到matlab的工作空间,比如我们用这样的指令:fis1=readfis(‘fis1.fis’):就创建了一个叫myFLC的结构体 ...

  6. 基于MATLAB的单级倒立摆仿真

    有关代码及word文档请关注公众号“浮光倾云”,后台回复A010.02即可获取 一.单级倒立摆概述 倒立摆是处于倒置不稳定状态,人为控制使其处于动态平衡的一种摆,是一类典型的快速.多变量.非线性.强耦 ...

  7. 控制算法的划分(自适应控制、预测控制、模糊控制等,PID等;蚁群算法、神经网络,还有机器学习、人工智能中的很多方法)

    一般来说,控制器的设计,分为控制框架的选取,跟参数的优化.自适应控制.预测控制.模糊控制等,跟PID一样,是控制算法(我习惯称为控制框架). 而粒子群.遗传算法(类似的还有蚁群算法.神经网络,还有机器 ...

  8. Matlab 绘制三维立体图(以地质异常体为例)

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  9. Matlab slice方法和包络法绘制三维立体图

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

随机推荐

  1. docker系列五之数据卷(volumn)

    docker数据卷(volumn) 一. 为什么需要数据卷 docker镜像是由多个文件系统(只读层)叠加而成,当我们启动一个容器的时候,docker的服务端会加载镜像的只读层,并在最顶层创建一个可读 ...

  2. scp2自动部署

    安装scp2 npm install scp2 --save-dev 配置服务器文件 项目根目录创建文件 .env.dev 文件 (测试环境变量)和创建 .env.prod 文件 (生产环境变量) V ...

  3. ajax检查用户名重复

    1.获取ajax对象 new XMLHttpRequest(); IE6-8: new ActiveXOject("Microsoft.XMLHTTP"); 兼容判断:if(XML ...

  4. 用jq动态给导航菜单添加active

    点击后页面跳转到了新的链接,找到所有的li下的a标签,对其链接地址进行判断,如果和当前浏览器的地址一致,就认为是当前应该激活的菜单,添加active类,否则就取消. <ul class=&quo ...

  5. S2-052

    前言 S2-052的RCE漏洞和以前的有些不同,不再是ognl表达式注入了,而是xml反序列化漏洞导致的RCE(另外还有S2-055漏洞是fastjson的反序列化漏洞).我复现的时候遇到一个坑,导致 ...

  6. Reeds-Shepp曲线和Dubins曲线

    转载:https://www.cnblogs.com/huyanan/articles/6243694.html 什么是Reeds-Shepp曲线?       想象你下班开车回家,到了小区后想把车停 ...

  7. GNS3

    什么是GNS? GNS Graphical Network Simulator Simulator or Emulator? 尽管GNS全拼包含simulator,但实际上是emulator.我们说其 ...

  8. Python asyncio 模块

    Python 3.4 asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接获取一个EventLo ...

  9. Springboot项目中的favicon

    当项目还不大的时候,打开浏览器的favicon是自带的小叶子,如下图 此时,我们只需要将我们想要的favicon命令为favicon.ico放置在resource下,重启服务即可改变图标 当项目越来越 ...

  10. evpp http server定制实现

    evpp http server定制实现 evpp http server定制实现 evpp http server定制实现