一、简介

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. django 2.0 xadmin 错误集锦

    转载 django 2.0 xadmin 错误集锦 2018-03-26 10:39:18 Snail0Li 阅读数 5188更多 分类专栏: python   1.django2.0把from dj ...

  2. POJ2729 Robocode(离散化与模拟-----提醒曾经爱玩游戏的自己没做出这个

    题目链接 :http://poj.org/problem?id=2729 题目很长,有不少也是废话.类似小时候玩的坦克大战.每个坦克速度为10,炮弹速度为20.子弹出界就消失,坦克出不了界限.相向的子 ...

  3. SAP应用真的不性感么

    这是一个问题. 上图的One Order是楼下一个部门领导让我给他的团队做的一个古老框架的session. 这个框架诞生于2000年,采用纯面向过程的思路开发.因为上世纪90年代ABAP开始引入对面向 ...

  4. 11.ForkJoinPool 分支/合并框架 (工作窃取)

    /*ForkJoinPool 分支/合并框架 (工作窃取)*/ Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork) 成若干个小任务(拆到给出的临界值为止),再将一个个的小 ...

  5. springboot系列(二) 创建springboot工程

    本文转载自:https://www.cnblogs.com/magicalSam/p/7171716.html 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 ...

  6. python 制作影视动画、电影特效工具

    一直觉得电影特效,动画制作这些都很什么,在google上搜索了下python开发电影特效的内容,发现了几个不错的软件,都支持python脚本开发. Houdini  Houdini (电影特效魔术师) ...

  7. mongodb的基本操作之数据创建索引

    在数据量较少时,不使用索引,查询是很快的,但是在数据量较大时,查询将会变得非常缓慢,在mongodb中 查看索引 > db.test_collection.getIndexes() [ { &q ...

  8. YOLO---近段时间的练习目标

    YOLO---近段时间的练习目标 yolo(darknet)官方主页:https://pjreddie.com/darknet/yolo/   和在学校时用的不太一样了,有更新了- 还有一个常用版本: ...

  9. Paper Reading:word2vec Parameter Learning Explained

    论文:word2vec Parameter Learning Explained 发表时间:2016 发表作者:Xin Rong 论文链接:论文链接 为了揭开Word2vec的神秘面纱,不得不重新整理 ...

  10. Hibernate初探之单表映射——创建持久化类

    编写第一个Hibernate例子 第二步:创建持久化类(持久化类的设计原则要遵循javabeans的设计原则) javabeans的设计原则: 1.公有的类2.提供公有的不带参数的默认的构造方法3.属 ...