资源描述:
《Matlab 的 Fuzzy 工具箱实现模糊控制.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab的Fuzzy工具箱实现模糊控制(rulelist的确定)用Matlab的Fuzzy工具箱实现模糊控制--用Matlab中的Fuzzy工具箱做一个简单的模糊控制,流程如下:1、创建一个FIS(FuzzyInferenceSystem)对象,a=newfis(fisName,fisType,andMethod,orMethod,impMethod,aggMethod,defuzzMethod)一般只用提供第一个参数即可,后面均用默认值。2、增加模糊语言变量a=addvar(a,'varType','varName',varBounds)模糊变量有两类:input和output。在
2、每增加模糊变量,都会按顺序分配一个index,后面要通过该index来使用该变量。3、增加模糊语言名称,即模糊集合。a=addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每个模糊语言名称从属于一个模糊语言。Fuzzy工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。参数mfType即隶属度函数(MembershipFunctions),它可以是Gaussmf、trimf、trapmf等,也可以是自定义的函数。每一个语言名称也会有一个index,按加入的先后顺序得到,从1开始。4、增加控制规则,即模糊推理的规
3、则。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”,则写为:[13211]5、给定输入,得到输出,即进行模糊推理。output=evalfis(input,fismat)其中fismat为前面建立的那个FIS
4、对象。一个完整的例子如下:clearall;a=newfis('myfis');a=addvar(a,'input','E',[07]);a=addmf(a,'input',1,'small','trimf',[014.333]);a=addmf(a,'input',1,'big','trimf',[1.666767]);a=addvar(a,'output','U',[07]);a=addmf(a,'output',1,'small','trimf',[014.333]);a=addmf(a,'output',1,'big','trimf',[1.666767]);rulelist=[
5、1111;2211];a=addrule(a,rulelist);u=evalfis(4,a)其结果为:u=4.221