根据提供的信息,我们可以详细解析如何使用MATLAB来创建并求解模糊查询表。这段代码主要展示了如何使用MATLAB中的Fuzzy Logic Toolbox来构建一个简单的模糊逻辑系统,并通过该系统生成模糊查询表。下面将对各个步骤进行详细解释。 ### 1. 创建模糊逻辑系统 我们使用`newfis`函数创建一个新的模糊推理系统(FIS),并将其命名为`fuzzf`: ```matlab a = newfis('fuzzf'); ``` ### 2. 定义输入变量及其隶属度函数 接下来定义输入变量`e`和`ec`,分别表示误差和误差变化率,并为它们添加不同的隶属度函数。每个隶属度函数都使用`trimf`(三角形形状的隶属度函数)来定义,覆盖了从负到正的不同区间。例如对于输入变量`e`: - `NB`: 负大 - `NM`: 负中 - `NS`: 负小 - `Z`: 零 - `PS`: 正小 - `PM`: 正中 - `PB`: 正大 示例代码如下: ```matlab f1 = 2; a = addvar(a, 'input', 'e', [-3*f1, 3*f1]); a = addmf(a, 'input', 1, 'NB', 'trimf', [-3*f1, -3*f1, -2*f1]); // 其他隶属度函数定义省略 ``` 同样的方式定义输入变量`ec`: ```matlab f2 = 3; a = addvar(a, 'input', 'ec', [-2*f2, 2*f2]); // 同样地,为ec添加不同的隶属度函数 ``` ### 3. 定义输出变量及其隶属度函数 接下来定义输出变量`u`,即控制输出,并为其添加不同范围的隶属度函数。这些函数同样使用`trimf`来定义,覆盖了从负到正的不同区间。例如: ```matlab f3 = 2; a = addvar(a, 'output', 'u', [-3*f3, 3*f3]); a = addmf(a, 'output', 1, 'NB', 'trimf', [-3*f3, -3*f3, -2*f3]); // 其他隶属度函数定义省略 ``` ### 4. 定义模糊规则 定义了一系列模糊规则来连接输入和输出变量。规则列表通过`rulelist`数组给出,每条规则代表了特定条件下的输出行为。例如: ```matlab rulelist = [11511; 12111; ...]; a = addrule(a, rulelist); ``` 这里使用的是Takagi-Sugeno-Kang型的模糊推理系统,规则列表中的数字代表了输入变量的不同隶属度函数组合以及对应的输出结果。 ### 5. 显示模糊规则库 通过`showrule(a)`可以显示模糊系统的规则库,虽然在提供的代码中没有直接调用这个函数,但可以使用它来检查规则是否正确设置。 ### 6. 设置反模糊化方法并保存模糊系统 设置反模糊化方法为重心法(`centroid`),这是计算输出值的一种常用方法。 ```matlab a1 = setfis(a, 'DefuzzMethod', 'centroid'); ``` 然后将创建好的模糊系统保存到一个文件中,以便后续使用或在其他地方加载: ```matlab writefis(a1, 'fuzzf'); ``` ### 7. 加载保存的模糊系统并生成查询表 从文件中读取保存的模糊系统,并生成查询表: ```matlab a2 = readfis('fuzzf'); disp('fuzzy controllertable: e=[-6,+6], ec=[-6,+6]'); Ulist = zeros(13, 13); for i = 1:13 for j = 1:13 e(i) = -7 + i; ec(j) = -7 + j; Ulist(i, j) = evalfis([e(i), ec(j)], a2); end end Ulist = floor(Ulist); ``` 这里通过循环遍历不同的误差和误差变化率值,并使用`evalfis`函数计算出相应的控制输出,从而生成一个查询表`Ulist`。 ### 8. 可视化模糊系统 可视化模糊系统中的输入输出变量的隶属度函数,以直观地查看系统配置: ```matlab figure(1); plotfis(a2); figure(2); plotmf(a, 'input', 1); figure(3); plotmf(a, 'input', 2); figure(4); plotmf(a, 'output', 1); ``` 以上就是如何使用MATLAB创建并求解模糊查询表的过程详解。这段代码提供了一个基础框架,可以根据实际需求进一步扩展和完善。
close all;
a=newfis('fuzzf');
f1=2;
a=addvar(a,'input','e',[-3*f1,3*f1]); %Parameter e
a=addmf(a,'input',1,'NB','trimf',[-3*f1,-3*f1,-2*f1]);
a=addmf(a,'input',1,'NM','trimf',[-3*f1,-2*f1,-1*f1]);
a=addmf(a,'input',1,'NS','trimf',[-2*f1,-1*f1,0]);
a=addmf(a,'input',1,'Z','trimf',[-1*f1,0,1*f1]);
a=addmf(a,'input',1,'PS','trimf',[0,1*f1,2*f1]);
a=addmf(a,'input',1,'PM','trimf',[1*f1,2*f1,3*f1]);
a=addmf(a,'input',1,'PB','trimf',[2*f1,3*f1,3*f1]);
f2=3;
a=addvar(a,'input','ec',[-2*f2,2*f2]); %Parameter ec
a=addmf(a,'input',2,'NB','trimf',[-2*f2,-2*f2,-1*f2]);
a=addmf(a,'input',2,'NS','trimf',[-2*f2,-1*f2,0]);
a=addmf(a,'input',2,'Z','trimf',[-1*f2,0,1*f2]);
a=addmf(a,'input',2,'PS','trimf',[0,1*f2,2*f2]);
a=addmf(a,'input',2,'PB','trimf',[1*f2,2*f2,2*f2]);
f3=2;
a=addvar(a,'output','u',[-3*f3,3*f3]); %Parameter u
a=addmf(a,'output',1,'NB','trimf',[-3*f3,-3*f3,-2*f3]);
a=addmf(a,'output',1,'NM','trimf',[-3*f3,-2*f3,-1*f3]);
a=addmf(a,'output',1,'NS','trimf',[-2*f3,-1*f3,0]);
a=addmf(a,'output',1,'Z','trimf',[-1*f3,0,1*f3]);
a=addmf(a,'output',1,'PS','trimf',[0,1*f3,2*f3]);
a=addmf(a,'output',1,'PM','trimf',[1*f3,2*f3,3*f3]);
a=addmf(a,'output',1,'PB','trimf',[2*f3,3*f3,3*f3]);
rulelist=[1 1 5 1 1; %Edit rule base
1 2 1 1 1;
- loujq20082013-02-01只是一篇文献,不是很好用,讲的也不是很详细
- earth2112013-06-17讲的还行,有一点用处
- 粉丝: 3
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 白色大气风格的旅游酒店企业网站模板.zip
- 白色大气风格的律师行政模板下载.zip
- 白色大气风格的旅游整站网站模板.zip
- 白色大气风格的美国留学成人教育网站模板.zip
- 白色大气风格的贸易物流企业网站模板.zip
- 白色大气风格的绿色服务型公司模板下载.zip
- 白色大气风格的美食DIY应用APP官网模板.zip
- 白色大气风格的美容养生spa企业网站模板.zip
- 白色大气风格的美食餐饮网站模板下载.zip
- 白色大气风格的模糊背景商务网站模板下载.zip
- 白色大气风格的美食厨师展示模板下载.zip
- 白色大气风格的木材加工行业网站模板下载.zip
- 白色大气风格的美食网站模板下载.zip
- 白色大气风格的摩托车爱好者网站模板下载.zip
- 白色大气风格的摩天大厦网站响应式模板.zip
- 白色大气风格的农业科技网站模板下载.zip