一、简介

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. 03 Django之视图函数

    一.Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受WEB请求并返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

  2. 普通选项卡+自动播放功能+向前/向后按钮 原生js

    今天做了幻灯片,主要功能包括:普通选项卡,向前/向后播放按钮,向前?向后播放功能,自动播放功能 要实现简单选项卡功能是没有问题的,但是添加功能就出现各种各样的问题了 遇到的问题:1 下标问题 2普通选 ...

  3. 3 webpack 4 加vue 2.0生产环境搭建

    1 在前两篇笔记中已经能把开发环境弄好了,接来下构建他的生产环境 2 使用npm 安装url-loader和file-loader来支持图片和字体 npm install --save-dev url ...

  4. Go 缓冲信道

    缓冲信道 语法结构:cap为容量 ch := make(chan type, cap) 缓冲信道支持len()和cap(). 只能向缓冲信道发送容量以内的数据. 只能接收缓冲信道长度以内的数据. 缓冲 ...

  5. [LeetCode] 17. 电话号码的字母组合 ☆☆☆(回溯) ###

    描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出:[&q ...

  6. dubbo框架梳理

    Dubbo分层 Dubbo框架运行主要分如下九层: 配置层:config 服务代理层:proxy 注册中心层:registry 路由层:cluster 监控层:monitor 远程调用层:protoc ...

  7. sql基础的基础

    一.数据定义语言(DDL) create table alter table drop table create index alter index drop index create view dr ...

  8. linux centos Supervisor守护.netcore进程安装配置

    场景:当部署完.netcore程序后 使用dotnet xx.dll 后可以运行,但关闭shell或隔断时间会自动断开,此时部署的.netcore程序就不能访问了,此时需要用到Supervisor了 ...

  9. Rocketmq 集群部署

    10.1.0.178 配置文件 broker-a-m.properties brokerClusterName=PaymentClusterbrokerName=broker-anamesrvAddr ...

  10. python3使用ConfigParser从配置文件中获取列表

    使用python3使用ConfigParser从配置文件中获取列表 testConfig.py #!/usr/bin/env python # coding=utf- __author__ = 'St ...