matlab中模糊控制


关于模糊控制查了一些资料,觉得下面的例子简单又易于理解,甚好,现转载如下,以备日后查阅及与大家分享

用 Matlab 的 Fuzzy 工具箱实现模糊控制

 

用 Matlab 中的 Fuzzy 工具箱做一个简单的模糊控制,流程如下:

1、创建一个 FIS (Fuzzy Inference System ) 对象,

a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod)

一般只用提供第一个参数即可,后面均用默认值。

2、增加模糊语言变量

a = addvar(a,'varType','varName',varBounds)

模糊变量有两类:input 和 output。在每增加模糊变量,都会按顺序分配一个 index,后面要通过该 index 来使用该变量。

3、增加模糊语言名称,即模糊集合。

a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)

每个模糊语言名称从属于一个模糊语言。Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。

参数 mfType 即隶属度函数(Membership Functions),它可以是 Gaussmf、trimf、trapmf等,也可以是自定义的函数。

每一个语言名称也会有一个 index,按加入的先后顺序得到,从 1 开始。

4、增加控制规则,即模糊推理的规则。

a = addrule(a,ruleList)
其中 ruleList 是一个矩阵,每一行为一条规则,他们之间是 ALSO 的关系。

假定该 FIS 有 N 个输入和 M 个输出,则每行有 N+M+2 个元素,前 N 个数分别表示 N 个输入变量的某一个语言名称的 index,没有的话用 0 表示,后面的 M 个数也类似,最后两个分别表示该条规则的权重和各个条件的关系,1 表示 AND,2 表示 OR。

例如,当“输入1” 为“名称1” 和 “输入2” 为“名称3” 时,输出为 “ 输出1” 的“状态2”,则写为:

[1 3 2 1 1]

5、给定输入,得到输出,即进行模糊推理。

output = evalfis(input,fismat)

其中 fismat 为前面建立的那个 FIS 对象。

一个完整的例子如下:

 

clear all;
a = newfis('myfis');

a = addvar(a,'input','E',[0 7]);
a = addmf(a,'input',1,'small','trimf',[0 1 4.333]);
a = addmf(a,'input',1,'big','trimf',[1.6667 6 7]);

a = addvar(a,'output','U',[0 7]);
a = addmf(a,'output',1,'small','trimf',[0 1 4.333]);
a = addmf(a,'output',1,'big','trimf',[1.6667 6 7]);

rulelist = [1 1 1 1;
            2 2 1 1];
a = addrule(a,rulelist);

u = evalfis(4,a)

 

其结果为:

 

u = 4.221


本文来自:http://blog.sina.com.cn/s/blog_4e4fa5f10100k7so.html


  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值