完整的模糊推理系统介绍以及matlab中从零实现(下篇)

2023-11-02

模糊推理系统从零实现

完整的模糊推理系统介绍以及matlab中从零实现(上篇)中,我们对一个完整的模糊推理系统所涉及到的知识点做了一个细致地展述。
进而,我们可以根据实际需要设计一个属于自己的模糊推理系统。主要涉及到以下几个方面的参数设置。

  1. 系统的输入输出变量
  2. 变量对应的语义变量,即分类
  3. 每个语义变量都需要一个隶属度函数与之对应
  4. 推理规则

本文的模糊推理系统的输入,输出以及相应规则设定如下

  1. 系统输入为两个,分别为商品评价(差、中、好、极好)、用户购买意愿(弱、中、强、很强)。输入范围都是[0 10]
  2. 系统输出为用户行为,购买与否。用[0 1]区间的数值表示。大于0.5则为购买。
  3. 模糊规则考虑为
  • rule1: IF 购买意愿很强 THEN ACtion=买
  • rule2: IF 商品评价极好且购买意愿为不为弱 THEN Action=买
  • rule3: IF 商品评价为差 THEN Action=不买
  • rule4: IF 如果商品评价不为差且购买意愿强 THEN Action=买
    在这里插入图片描述
    最终的目的是建成如上的一个推理系统

基本命令介绍

在调用doc fuzzy得到的文档窗口后,对Fuzzy Inference System Modeling中的functions做一个仔细地阅读,不难发现。
matlab在安装工具箱Fuzzy的基础上,给定了几个模糊推理系统:tipper等
因此,我们可以直接通过tipper=readfis('tipper')调用得到这个完整的系统。还可以通过命令plotfis(tipper)showfis(tipper)对其进行分析。
在这里插入图片描述
我们可以看到它有两个输入和一个输出,并且分别具有不同的语义变量和隶属度函数。通过showrule(tipper)可以看到它设置的规则为

'1. If (service is poor) or (food is rancid) then (tip is cheap) (1) ’
'2. If (service is good) then (tip is average) (1) ’
‘3. If (service is excellent) or (food is delicious) then (tip is generous) (1)’

创建一个新的FIS

事实上,我们可以将工具箱自带的tipper做进一步优化。添加更多的输入,更完整的规则等。而这一点,在我们成功实现一个自己的系统后很容易做到。
我们通过fis=newfis(name)命令生成一个空的fis,并且在初始化的过程中,fis的类型,逻辑运算等都选择为默认值。
newfis的默认参数
可以发现,生成的基本fis中,模糊规则前件的对应min对应max,再将前件的隶属度同后件的隶属度函数比较取较小者。结合不同规则得到的输出隶属度值,取面积最大的情形,最后通过centorid,即面积重心的去模糊方法得到输出的数值。
在这里插入图片描述

在大多数时候,我们是不需要更改这些基础设定的。我们所需要做的就是,添加输入输出,语义变量以及隶属度函数,并且设定好相应的规则即可。如果需要对这些基础设定作出更改。可以通过命令setfig()进行改动。具体的可以参考该命令的帮助文档。

设定输入、输出

  1. 所用到的添加变量函数命令fis=addvar(fis,varType,varName,varBounds),即设定参数的类型:输入or输出,输入的名称和区间。
    因此,我们设定输入输出分别为:
    • fis=addvar(fis,‘input’,‘Attitude’,[0 10])
    • fis=addvar(fis,‘input’,‘Comment’,[0 10])
    • fis=addvar(fis,‘output’,‘Action’,[0 1])
      此时,我们可以看到系统的参数增加了。
      在这里插入图片描述
      与之对应的命令是fis = rmvar(fis,varType,varIndex)用于移除设定好的输入输出变量。
  2. 添加隶属度函数命令
    命令:fis = addmf(fis,varType,varIndex,mfName,mfType,mfParams),形参含义如下表
形参 含义
varType 参数类型,输入或输出
varIndex 参数标号,第几个输入或输出
mfName 隶属度函数名称,即语义变量
mfType 选用哪种隶属度函数
mfParams 隶属度函数生产参数

shopper=addmf(shopper,‘input’,1,‘weak’,‘gaussmf’,[1 0]);
shopper=addmf(shopper,‘input’,1,‘medium’,‘gaussmf’,[1 3.33]);
shopper=addmf(shopper,‘input’,1,‘strong’,‘gaussmf’,[1 6.77]);
shopper=addmf(shopper,‘input’,1,‘very strong’,‘gaussmf’,[1 10]);

对于输入1的四个语义变量设定相应的隶属度函数。同样地,我们也可以设定输入2(商品评价)和输出的语义变量和对应的隶属度函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

规则矩阵输入

在模糊推理系统中,推理规则设定是通过对规则矩阵R的元素进行相应的设定,并调用命令fis=addrule(fis,RuleMatrix)实现。
对于一个m个输入,n个输出,k条规则的系统规则矩阵R的规模大小为 k × ( m + n + 2 ) k\times(m+n+2) k×(m+n+2)其中一行元素分别对应一条规则。

每个行向量中的前m个元素表示m个输入的语义变量的标识
m+1到m+n之间的元素表示输出语义变量的标识
倒数第二个表示该规则的权重
最后一个元素表示逻辑前件的逻辑运算符,其中and表示为1,or表示为2

rule2: IF 商品评价极好且购买意愿为不为弱 THEN Action=买为例,
R(2,:)=[-1 4 2 1 1]细心的同学会发现R(2,1)前面有个负号,之所以会有这个负号,是因为在规则2的逻辑前件中有个不为,因此需要加个负号。
最终,我们可以得到规则矩阵R如下
R= [ 4 0 2 1 1 − 1 4 2 1 1 0 1 1 1 1 3 − 1 2 1 1 ] \left[\begin{array}{ccc|c|c}4&0&2&1&1\\-1&4&2&1&1\\0&1&1&1&1\\3&-1&2&1&1\end{array}\right] 41030411221211111111
调用命令shopper=addrule(shopper,ruleMatrix);showrule(shopper,'Format','symbolic');可以发现与预想的一致

'1. (Attitude == very strong) => (Action=买) (1) ’
‘2. (Attitude~=weak) & (Comment == very good) => (Action=买) (1)’
'3. (Comment == bad) => (Action=不买) (1) ’
'4. (Attitude == strong) & (Comment~=bad) => (Action=买) (1) ’
在这里插入图片描述
这时候,是不是和我们直接调用的样例fistipper很像了呢

系统评价

此时,我们已经构建好了一个模糊推理系统。可以传入一定的参数进行分析。
假设商品评价和购买意愿都为7,那么该用户选择购买的可能性为多少呢?
在这里插入图片描述
从上图看还是比较合理的,但是当我们把输入改为[2 4]时,按照我们的思维,该用户不会选择购买的可能性更大。可结果却差异较大
在这里插入图片描述
之所以会出现这种情况,是因为我们的规则设立并不是很合理。所以,在模糊推理系统设定中,推理规则的设定也很重要

系统调整

为了修改我们的系统,使之更加合理。或者将别人建立好的系统做一定的修改,以满足更多的需求。我们可能需要对系统的输入输出以及他们对应的语义变量隶属度函数等进行调整。

  1. 我们可以通过rmvar()移除一些输入或输出,也可以通过advar()添加一些新的输入输出变量。
  2. 并且通过addmf()rmmf()对隶属度函数进行增删。同时,可以调用mfedit()对隶属度函数做一个可视化的调整
    在这里插入图片描述
  3. 如果要对规则做出调整。那么我们可以先试着分析哪条规则设置存在不合理性。这时候,可以调用ruleview()来可视化每条规则逻辑运算。
    在这里插入图片描述

从这个图可以大概分析,规则2关于Attitude和规则4关于Comment的设定可能存在一定的不合理性。因此我们需要进一步修改规则设定。有两种操作方法

  • 将原来的规则矩阵删除,重新设定规则矩阵。fisname.rule=[]
  • 也可以通过ruleedit()进行可视化界面下的规则设定
    在这里插入图片描述
    系统评价也就是根据不同输入下,得到的输出结果是否符合逻辑进行评价。并针对所出现的问题作出相应的改变。
    目前我个人认为好的模糊系统应该能够有好的规则设定。这比隶属度函数等的设定更加重要

系统导入导出

matlab中可以将自己创建的FIS进行保存。通过调用命令writefis(),具体的参数设定可以参考帮助文档。

附录

附上shopper完整地实现代码。只是在规则设定方面没有做太多的考究。

%生成一个商品购买意愿测试系统
%输入1:购买意愿[0 10]记为Attitude
%语义变量:弱 中 强 很强
%输入2:商品评价[0 10]记为Comment
%语义变量:差 中 好 极好
%输出1:购买行为Action=不买, Action=买
%结合实际,简单的定义四个规则
%rule1: IF 购买意愿很强 THEN ACtion=买
%rule2: IF 商品评价极好且购买意愿为不为弱 THEN Action=买
%rule3: IF 商品评价为差 THEN Action=不买
%rule4: IF 如果商品评价不为差且购买意愿强 THEN Action=买
%%%四个规则的逻辑表示形式
%rule1: if Attitude==very strong -> Action=买
%rule2: if comment==very good && attitude~=weak -> Action=买
%rule3: if comment==bad -> Action=不买
%rule4: if comment~=bad && attitude==strong -> Action=买
clear;
close all;
shopper = newfis('shopper');
%添加系统输入和输出
shopper=addvar(shopper,'input','Attitude',[0 10]);
shopper=addvar(shopper,'input','Comment',[0 10]);
shopper=addvar(shopper,'output','Action',[0 1]);
%添加系统输入输出的语义变量及隶属度函数
figure
shopper=addmf(shopper,'input',1,'weak','gaussmf',[1 0]);
shopper=addmf(shopper,'input',1,'medium','gaussmf',[1 3.33]);
shopper=addmf(shopper,'input',1,'strong','gaussmf',[1 6.77]);
shopper=addmf(shopper,'input',1,'very strong','gaussmf',[1 10]);
plotmf(shopper,'input',1)
title('关于购买意愿的隶属度函数')
showfis(shopper);
figure
shopper=addmf(shopper,'input',2,'bad','trimf',[0 0 3.33]);
shopper=addmf(shopper,'input',2,'medium','trimf',[0 3.33 6.67]);
shopper=addmf(shopper,'input',2,'good','trimf',[3.33 6.67 10]);
shopper=addmf(shopper,'input',2,'very good','trimf',[6.67 10 10]);
plotmf(shopper,'input',2)
title('关于商品评价的隶属度函数')
figure
shopper=addmf(shopper,'output',1,'不买','zmf',[0.5 0.5]);
shopper=addmf(shopper,'output',1,'买','smf',[0.5 0.5]);
plotmf(shopper,'output',1)
title('关于购买结果的隶属度函数')
ruleMatrix=[4 0 2 1 1;-1 4 2 1 1;0 1 1 1 1;3 -1 2 1 1];
shopper=addrule(shopper,ruleMatrix);
showrule(shopper,'Format','symbolic');
figure
plotfis(shopper);
%进行输入测试[7 8]
[output,fuzzifiedInputs,ruleOutputs,aggregatedOutput] = evalfis([7 8],shopper);
outputRange = linspace(shopper.output.range(1),shopper.output.range(2),length(aggregatedOutput))'; 
figure
subplot(211)
plot(outputRange,ruleOutputs,[output output],[0 1])
title('每个规则的输出')
legend('rule1','rule2','rule3','rule3')
xlabel('Action')
ylabel('Output Membership')
subplot(212)
plot(outputRange,aggregatedOutput,[output output],[0 1])
xlabel('Action')
ylabel('Output Membership')
legend('Aggregated output fuzzy set','Defuzzified output')
title('最终输出')
figure
ruleview(shopper)
% for i=1:4
%     hold on;
%     plot([fuzzifiedInputs(i),fuzzifiedInputs(i)],[0 1]);
% end

%更新规则后
%%%四个规则的逻辑表示形式
%rule1: if Attitude==very strong -> Action=买
%rule2: if comment==very good && attitude==strong -> Action=买
%rule3: if comment==bad -> Action=不买
%rule4: if comment==good && attitude==strong -> Action=买
shopper.rule=[];
ruleMatrix=[4 0 2 1 1;3 4 2 1 1;0 1 1 1 1;3 3 2 1 1];
shopper=addrule(shopper,ruleMatrix);
showrule(shopper,'Format','symbolic');
figure
plotfis(shopper);
%进行输入测试[7 8]
[output,fuzzifiedInputs,ruleOutputs,aggregatedOutput] = evalfis([2 4],shopper);
outputRange = linspace(shopper.output.range(1),shopper.output.range(2),length(aggregatedOutput))'; 
figure
subplot(211)
plot(outputRange,ruleOutputs,[output output],[0 1])
title('每个规则的输出')
legend('rule1','rule2','rule3','rule3')
xlabel('Action')
ylabel('Output Membership')
subplot(212)
plot(outputRange,aggregatedOutput,[output output],[0 1])
xlabel('Action')
ylabel('Output Membership')
legend('Aggregated output fuzzy set','Defuzzified output')
title('最终输出')
figure
ruleview(shopper)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完整的模糊推理系统介绍以及matlab中从零实现(下篇) 的相关文章

  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 在 C/C++ 中调用 MATLAB API

    我刚刚从某处听说 对于数值计算 MATLAB 确实提供了一些用户友好的 API 如果你在 C C 代码中调用这些 API 你可以显着加快计算速度 但我在MATLAB文档中没有找到这样的信息 例如http www mathworks com
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 如何以编程方式指定 MATLAB 编辑器键绑定

    我想将键盘键绑定设置为Windows 默认设置我想在启动时使用startup m因为我希望在大量系统上设置此设置 首选项对话框中的等效设置是 MATLAB gt Keyboard gt Shortcuts gt Active Setting
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • python 正弦和余弦精度

    如何提高Python正弦和余弦精度 例如 我想使用以下代码 只需计算随机复向量 x 的 y cos acos x import numpy as np N 100000 x np zeros N 1j np zeros N for k in
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t

随机推荐

  • 为什么推荐编程初学者学习C(C++)/Python?

    人类走进信息化时代 掌握计算机编程是一项不错的技能 培养逻辑思维 解决现实中实际问题的能力 学会将计算机作为人类思想和能力的延展性工具 计算机行业寒冬 但AI和互联网仍然是未来发展的大趋势 学习C语言和Python的区别在哪 为什么选这俩
  • (CVPR2019)图像语义分割(18) DANet-集成双路注意力机制的场景分割网络

    论文地址 Dual Attention Network for Scene Segmentation 工程地址 github链接 1 介绍 该论文提出新型的场景分割网络DANet 利用自注意力机制进行丰富语义信息的捕获 在带有空洞卷积的FC
  • 详解BGP 双平面

    拓扑描述 上平面为A 面 AS1 下平面为B 面 AS2 左边用户群 AS3 右边用户群 AS4 组成两个平面的原因 两个城市之间的数据交互 分为业务流量和办公流量 于此同时 希望业务流量走 上面 办公流量走下面 流量的组成会很清晰 同时两
  • 用windows系统做服务器配置,windows系统做服务器配置

    windows系统做服务器配置 内容精选 换一换 迁移前 您需要设置目的端服务器 该目的端用来接收源端的数据 同时您也可以使用该目的端进行迁移测试和启动目的端 只有 迁移阶段 gt 迁移实时状态 为时才可设置目的端 进入 主机迁移服务 页面
  • Windows10神州网信政府版的配置修改

    Windows10神州网信政府版初始安装完成后 在有些界面上呈现 某些设置已隐藏或由你的组织管理 这就意味着有很多属性并不能由使用者修改 这对用户来说很不不方便 下面是经常用到的一些属性修改 1 修改屏幕保护属性 按Win键 R键调出运行框
  • 排序算法之分治排序

    归并排序是基于分治法实现的 归并排序将待排序的元素序列分为两个长度相等的子序列 为每一个子序列排序 然后再将它们合并成一个序列 合并两个子序列的过程称为两路归并 在执行两路归并算法时 先把待归并元素序列L1复制到辅助数组L2中 再从L2归并
  • Selenium隐藏浏览器特征

    Selenium隐藏浏览器特征 Selenium特征 1 CDP 2 stealth min js 3 undetected chromedriver 4 操作已开启的浏览器 4 常见的隐藏Selenium特征的方法 4 1 修改navig
  • hadoop集群优化(四):开启历史任务服务器

    文章目录 说明 分享 操作 修改配置 同步配置 启动历史服务器 查看jobHistory 总结 说明 hadoop支持历史服务器功能 默认关闭 开启后 通过web可查看完成运行的MapReduce做的的信息记录 如Map和Reduce使用情
  • Python进阶学习(一)

    背景 在编程语言的大背景下 Python普遍被认为是一门易上手的脚本语言 而随着Python的应用越来越广泛 仅仅停留在会跑Python程序是不够的 本篇专栏主要记录一些高阶的用法以及Python语言的一些机制 Python语言掌握需要具备
  • matlab改进秃鹰算法IBES 可直接运行 包括23个测试函数 提供与原算法对比~Matlab

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 matlab改进秃鹰算法IBES 可直接运行 包括23个测试函数 提供与原算法对比 Matlab 部分源码 清空环境变量 warning off 关闭报警信息 close
  • 威联通qnap SMB速度慢 只有30M、50M的解决方法

    首先 保证NAS与电脑处于千兆以上的局域网中 其次 然后就没有然后了 mmp 研究了一晚上 客服一问三不知 补充一下 有可能这个方法改完无效 这时候你先把 限制匿名用户访问 选择启动 默认是启动严格 然后把否决文件再勾上 然后再取消掉 目前
  • GESP C++ 四级样题卷

    一 单选题 每题 2 分 共 30 分 1 在 C 中 指针变量的大小 单位 字节 是 A 2 B 4 C 8 D 与编译器有关 答案 D 解析 在大多数现代的 32 bit 和 64 bit 的 C 编译器中 指针变量的大小通常是 4 字
  • iOS进阶—Runtime源码解析:动态方法解析

    GitHub参考 PS 参考GitHub分享的objc runtime master代码 及Runtime003代码 iOS进阶 目录 接上文iOS进阶 Runtime源码解析 消息发送 查看Runtime源码 No implementat
  • JS 统计字符串

    function getLength val var str new String val var bytesCount 0 for var i 0 n str length i lt n i var c str charCodeAt i
  • 用watch监听this.$store数据的变化

    如监听this store state username的值 在watch对象中写 watch store state username 你需要执行的代码
  • ES版本升级后出现Trying to create too many scroll contexts. Must be less than or equal to: [500]异常

    从一个异常说起 I O dispatcher 79 WARN RestClient request POST http xx xx xxx xxx 8080 index search scroll 600s returned 1 warni
  • C++13-STL模板-栈stack

    C 13 STL模板 栈stack 在线练习 http noi openjudge cn https www luogu com cn 大纲要求 3 算法模板库中的函数 min max swap sort 4 栈 stack 队列 queu
  • 在线代理检测网站

    20210203 很久之前 写代理的代码的时候 记录过几个测试代理的网站 后来也就直接放在书签里吃灰了 这里直接把这个几个网站记录在这里 http www xdaili cn monitor http proxies site digger
  • C++封装篇 类对象的定义

    1 对象的实例化 在c 中类是一个模板 对象的实例化其实就是计算机根据一个类的设计制造出多个对象的过程 对象实例化有两种方式 从栈实例化 从堆实例化 2 从栈实例化 class TV public char name 20 电视机的铭牌 i
  • 完整的模糊推理系统介绍以及matlab中从零实现(下篇)

    模糊推理系统从零实现 在完整的模糊推理系统介绍以及matlab中从零实现 上篇 中 我们对一个完整的模糊推理系统所涉及到的知识点做了一个细致地展述 进而 我们可以根据实际需要设计一个属于自己的模糊推理系统 主要涉及到以下几个方面的参数设置