一、简介

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】四 || Docker常用镜像安装

    一.nginx安装 1.拉取镜像:docker pull nginx 2.启动容器:docker run -d -p 80:80 nginx 3.查看nginx:ps aux | grep 'ngin ...

  2. vue中用div的contenteditable属性实现v-for遍历,双向数据绑定的动态表格编辑

    1.HTML部分 <tr v-for="(item,index) in customerVisitList2" :key="index"> < ...

  3. 使用.bat 批量将部分文件迁移到新的路径下

    1.建一个11.bat ,里面写  :   dir  /b /s  >1111.txt 保存后运行 即将所有的文件路径保存到1111.txt中 2.可以将获取的路径复制到execl中,找到自己需 ...

  4. 11 Windows编程——定时器

    周期性的发送WWL_TIMER消息的一个东西,这个周期可以由程序员自己设定.设定周期的数是SetTimer,停止定时器消息发送的函数是:Killximer: 定时器消息的特点: 1.不准确(也就是说, ...

  5. I2C总线、设备、驱动

    I2C总线.设备.驱动 框架 I2C驱动框架可分为3个部分,分别是:I2C核心层.I2C总线驱动层(适配器层)以及I2C设备驱动层: I2C核心层 提供了统一的I2C操作函数,主要有两套函数smbus ...

  6. 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境

    利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记   版权声明:本文为博主原 ...

  7. Data truncation: Incorrect datetime value: 'May 15, 2019 4:15:37 PM

    因为系统在windows下测试过是正常的 windows下的jdk+ windows下安装的mysql 全部cases通过 linux下的jdk + windows下安装的mysql 新增和更新,影响 ...

  8. C#的反射(一)

    1.什么是元数据(MetaData)和反射(reflection) 一般情况下我们的程序都在处理数据的读.写.操作和展示.但是有些程序操作的数据不是数字.文本.图片,而是程序和程序类型本身的信息. ① ...

  9. windows上使用Jenkins&Github实现CICD

    一.摘要 本篇文章笔者将详细介绍Jenkins和Github如何实现CICD的,文章将以Jenkins的使用为主线,伴随着介绍Git的使用,加上一些python代码的执行,最终生成测试报告 二.Jen ...

  10. 【转】go里面字符串转成 字节slice, 字节slice转成字符串

    原文: https://yourbasic.org/golang/convert-string-to-byte-slice/#convert-string-to-bytes ------------- ...