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

2023-11-09

模糊推理系统建模

在matlab中,通过调用文档命令doc fuzzy可以得到一个模糊工具箱的完整介绍。
我也是因为工作需要,在看完师姐论文后,仍然迷迷糊糊地。相信有许多人和我一样,在网上查了一堆论文、博客,可能也没有搞得太明白。
通过几天的认真阅读文档,并从零开始实现了一个模糊推理系统后。我打算通过这个博客来整理一下自己的心得。并且希望能够帮助到和我有同样需求的同学。

模糊逻辑基础

首先,对于一个模糊推理系统,其系统框图可以表现为如下形式
在这里插入图片描述
在给定输入的情况下,通过我们设定好的模糊推理系统,得到其结果输出。
此外,在开始创建自己的模糊推理系统时,需要了解认识一些相关的术语。

模糊集

摘抄文档英文解释就是:A fuzzy set is a set without a crisp, clearly defined boundary. It can contain elements with only a partial degree of membership.
相较于传统的集合,模糊集之间的界限划分更加模糊,每个元素是以[0,1]区间的数值隶属于该集合。而不是传统的属于(1)和不属于(0)。
并且,matlab中还给了一个形象生动的举例。对于周五,是否应该属于集合周末呢? 如果按照传统集合定义,它只能属于或者不属于。下图左。
而按照模糊集定义,他在一定程度上也算周末。如果我们认为这种程度比较明显,那么下图右的weekend-ness的值更加接近于1.
在这里插入图片描述
更进一步,考虑一周的每个小时,每一分是否属于周末,那么对于周五的不同时刻而言,上午属于周末的可能性更低,而晚上更容易被判定为周末。就可以得到如下更为连续的曲线图。
在这里插入图片描述
上图,也有一个专有的名字:隶属度函数或者membershipfunction,就是用来刻画输入变量属于模糊集的程度。在多大程度上符合模糊集定义。

现在对于模糊集的定义有了一个基本的认识。那么,我们可以发现生活中,存在着不少模糊集的概念。对于一个人的属性而言。高矮、胖瘦等,都是一个模糊的概念,都可以看做一个模糊集。

身高对应的隶属度函数

语义变量

在上一节中,我们了解到了什么是模糊集以及生活中的模糊集举例。现在问题来了,对于任何一个输入,它可能需要根据需要进行多层次划分。得到不同的模糊集合。那么每个模糊集合需要进行命名以免混淆。因此,语义变量就是用来标识模糊集合的。
同样以人的属性为例。我们可以做如下划分

属性 划分
身高 高、矮
身高 很高、高、矮、很矮
体重 胖、瘦

表中第二列的划分,都属于语义变量,分别代表一个模糊集合。那么,假定输入张三的身高为180cm,我们可以凭生活经验判断,张三为高的程度很大。也就是属于模糊集合高的数值越大(用[0 1]之间数值表示)。同时,为矮的可能性更小,属于模糊集合矮的数字越小。
张三身高示例

隶属度函数

对于每一个输入,不同的划分标准可以得到不同的语义变量和多个模糊集合。然后每个语义变量也要求有一个相应的隶属度函数与之对应。用来将输入变量映射到[0 1]区间的隶属度上去。
matlab提供了许多不同的隶属度函数供大家直接调用。常用的有

  1. 三角隶属度函数:trimf
  2. 梯形隶属度函数:trapmf
  3. 高斯和二元高斯隶属度函数:gaussmf,gauss2mf
    根据不同的需要进行选择。更多的隶属度函数以及调用格式可以参考matlab的隶属度函数介绍

当然,也可以自己创建新的隶属度函数。我有试过,但是失败了。有成功的朋友麻烦教教我

模糊推理规则,IF-THEN Rules

在我们将输入进行分类,得到语义变量并设定好隶属度函数后。对于每个不同的输入,我们均可以得到不同的隶属度值。
进一步,我们需要将这些隶属度值进行转化,根据一定的规则进行推理。
比如,我们可以设定如下规则。

如果 张三体重为胖且身高为矮 那么建议他减肥

用逻辑语言表述即为

if 张三体重== 胖&&身高 ==矮 then 建议减肥

在传统集合下,张三只能被判定为要么胖、要么瘦;要么高、要么矮。因此逻辑结果只能为0,1。其逻辑运算表为
典型逻辑运算
而现在,高矮胖瘦属于一个模糊的概念。在给定身高、体重的情况下,符合每个集合的程度不再是0,1的离散值。而是[0 1]区间的连续值。因此需要将传统的逻辑运算进行拓展,在保证值仅为0,1时逻辑正确的基础上,能用于(0,1)区间的值
模糊逻辑运算
通过将AND运算等价为minOR等价为maxNOT A等价为1-A,使得传统逻辑运算得到扩充。
那么在对张三体重进行隶属度划分以后,假如得到其隶属于胖的程度为0.7,隶属于矮的程度为0.2。
那么,逻辑前件的逻辑值为0.2,此时仍然需要对逻辑后件进行操作。由于,此时逻辑前件的值为0.2,是一个较小的值。那么我们可以作出的建议是,适量运动。

关于输出的语义变量和隶属度函数

到目前为止,我们已经完全了解了系统输入,输入的语义变量划分,隶属度函数刻画。同样地,对于系统的输出,我们仍然需要进行一个刻画。
对于一个给定的系统,其输出也是一个数值,而不同的数值区间也能进行不同的刻画。举例

输出变量 划分
建议 强烈地建议、基础性建议、不建议
锻炼频率 频繁、经常、偶尔、从不

仍然以上节的规则举例:

if 张三体重== 胖&&身高 ==矮 then 建议减肥

我们将建议程度通过数值区间[0 10]进行划分。那么,在逻辑前件为0.2的时候,我们的建议意见是多少呢?
示例无关但有用
从示意图中可以看见,当前件隶属度为0.2时,表明前件在0.2的程度上满足逻辑后件。那么在逻辑后件的隶属度函数中,找到0.2隶属度对应的阴影部分面积。进而可以通过反模糊的方法可以求出输出的值。也就是建议的数值大小。

多条规则下的模糊推理系统

通常情况下,一个系统的模糊规则不止一条,也不应该只有一条。本节使用matlab给定的例子进行分析。根据餐厅服务和食物口感给小费多少的示例

变量 语义变量 区间
输入变量1:Service poor,good,excellent [0 10]
输入变量2:food rancid,delicious [0 10]
输出变量1:tip cheap,average,generous [0 30]

并设定了如下三条规则

'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)’
逻辑表示
'1. (service== poor) | (food == rancid) => (tip=cheap) (1) ’
'2. (service == good) => (tip=average) (1) ’
‘3. (service== excellent) | (food == delicious) => (tip=generous) (1)’

通过命令plotmf()得到输入、输出的语义变量对应的隶属度函数如下
service
food
tip
那么,对于任一给定的两个输入[service food],我们可以得到其对应的模糊化的隶属度。
在这里插入图片描述
foodmf
从上面的两个图中,可以看出来:

  1. service对应于三个语义变量,隶属度分别为poor:0.02 good:0.85 excellent:0
  2. food对应于三个语义变量,隶属度分别为rancid:0.3 delicious:0

进而可以得到三个规则的逻辑前件值分别为

rule1: max(0.02,0.3)=0.3
rule2: 0.85
rule3: max(0,0)=0
对应于输出语义变量的隶属度为
在这里插入图片描述
图中的阴影部分面积就是三个规则分别对应的输出。
最后对所有的输出结果做一个centroid运算,也就是将所有阴影面积组合起来,求其重心的横坐标。这个横坐标的值就是系统的最终输出。而这一步操作叫做去模糊化。

在实际操作过程中,有多种可供选择的去模糊化的方法。分别为

  1. ‘centroid’ — Centroid of the area under the output fuzzy set. This method is the default for Mamdani systems.
  2. ‘bisector’ — Bisector of the area under the output fuzzy set
  3. ‘mom’ — Mean of the values for which the output fuzzy set is maximum
  4. ‘lom’ — Largest value for which the output fuzzy set is maximum
  5. ‘som’ — Smallest value for which the output fuzzy set is maximum

从零开始实现一个模糊推理系统

目前为止,对模糊推理系统的介绍已经差不多了。下一部分就准备从零开始实现一个模糊推理系统。用于判定用户对于一个商品的购买决策。系统的输入,输出以及相应规则设定如下

  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=买

在下一节中,我们将从零开始实现这一模糊推理系统

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 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 将
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 从筛查乳腺 X 光检查数字数据库 (DDSM) 获取数据

    我正在尝试以可读格式获取 DDSM 数据集 有谁有 DDSM heathusf 程序的工作版本 可以在 Linux 或 Windows 上正常运行吗 我知道 DDSM 的 jpeg 程序有一个适用于 linux 的工作版本 位于http w
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 在matlab中不使用for循环检查数组中的成员资格

    我想简化这段代码 使其无需 for 循环即可工作 for i 1 N for j 1 N if ismember j A PID i i TFP i j PID i i end end end 其中A是一个包含一些标签的矩阵 我之前存储的T
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open

随机推荐

  • [译]人脸检测与人脸识别简介

    From http www shervinemami co cc faceRecognition html Translated by 11 人脸识别 是一个在计算机视觉和生物特征识别领域十分活跃的话题 这个主题已经被给力地研究了25年 并
  • 海康威视网络摄像机远程监控配置(DDNS)

    http wzy02 blog 163 com blog static 300006082013111911918426 海康威视网络摄像机远程监控配置 海康威视网络摄像机出厂的默认IP地址 为192 0 0 64 需要将IPC的IP地址设
  • 从零开始一起学习SLAM(9)不推公式,如何真正理解对极约束?

    文章目录 对极几何基本概念 如何得到极线方程 作业 此文发于公众号 计算机视觉life 原文链接 从零开始一起学习SLAM 不推公式 如何真正理解对极约束 自从小白向师兄学习了李群李代数和相机成像模型的基本原理后 感觉书上的内容没那么难了
  • MyBatis实现In查询

    文章目录 一 SQL语法实现In查询 二 MyBatis实现In查询 1 Dao层方法的参数只有一个 2 Dao层方法的参数有多个 2 1 使用 Param xxx 实现 2 2 使用Map实现 参考资料 一 SQL语法实现In查询 SQL
  • 小学计算机的一些课题,小学信息技术课题申报题目参考

    小学信息技术课题申报题目参考 分类 课题研究 发表时间 2019 12 12 14 02 小学信息技术课题申报时 课题组织方通常会给予课题指南 亦或者选题范围 需要申报者根据自身的擅长领域以及实际工作遇到的问题 来确定研究的选题 以下是 小
  • unity之代码修改Shader参数值

    代码修改Shader参数 Shader 源代码下载 Unity 每次版本更新的时候 不单单会更新 Unity 配套的资源也是会一块更新 的 比如版本配套的 Shader 源代码 一 下载步骤 1 打开unity官网将纵向滑动条拉倒最底部点击
  • 转载:count(*)和count(1)的区别

    原始链接 https blog csdn net weixin 43980049 article details 89327782 count 和count 1 的区别是什么 weixin 43980049 2019 04 16 10 42
  • 每日一题:打家劫舍(C++)

    题目描述 你是一个专业的小偷 计划偷窃沿街的房屋 每间房内都藏有一定的现金 影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统 如果两间相邻的房屋在同一晚上被小偷闯入 系统会自动报警 给定一个代表每个房屋存放金额的非负整数数组 计
  • Linux环境下,执行可执行程序遇到Permission denied解决办法

    Linux环境下 执行可执行程序遇到Permission denied 原因是此可执行程序没有 执行 权限 1 可以通过 ls al 命令确认 以我遇到的为例子 可以看到play test 没有执行权限 x ls al rw r r 1 i
  • 基于MATLAB的小波去噪方法

    基于MATLAB的小波去噪方法 小波去噪是一种有效的信号降噪技术 在 MATLAB 中 可以利用 Wavelet Toolbox 实现小波变换和小波去噪 本文将介绍基于 MATLAB 的小波去噪方法 并提供相应的源代码 小波变换 小波变换是
  • Spring boot实现更改配置文件后自动更新配置

    一 原理说明 业务目标是实现当配置文件变更后能自动生效而不需要重启程序 实现依赖spring cloud的ContextRefresher对象和文件监听器 二 实现思路 1 使用apache的commons io的文件监听器来监控配置文件是
  • 就挺无语的,这是有脾气的博客

    文章目录 前言 1 背景 2 使用 3 公众号体验 4 结束语 前言 ChatGPT已经推出两个多月了 热度已经不减 ChatGPT由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型 一款人工智能技术驱动的自然
  • k8s之StatefulSet

    什么是StatefulSet 是用来创建有状态应用 可以通过过某种方式记录这些状态 然后在 Pod 被重新创建时 能够为新 Pod 恢复这些状态 什么是有状态应用 首先是需要有数据的持久化 及时Pod被重启后 也能恢复 与重启前保持一致 然
  • linux显存与gpu利用率都很低

    data label data cuda label cuda model cuda
  • 浏览器的存储方案

    浏览器的存储方案 认识Storage WebStorage主要提供了一种机制 可以让浏览器提供一种比cookie更直观的key value存储方式 localStorage 本地存储 提供的是一种永久性的存储方法 在关闭掉网页重新打开时 存
  • Genymotion推送2.6.0后几个问题自己解决的办法

    先上结果 注意版本号 Genymotion 2 6 0 VirtualBox 5 0 10 其实我用了官方的几种历史版本尝试组合了下没能解决最后是都单独更新解决的 到各自官网直接下载即可 反正vbox开了也是推送新版 Genymotion单
  • redis总结

    Redis redis视频链接 概述 Redis是什么 Redis是一个使用ANSI C编写的开源 支持网络 基于内存 分布式 可选持久性的键值对存储数据库 Redis能做什么 内存存储 持久化 rdb aof 效率高 可以用于高速缓存 订
  • 光线追踪算法—镜面反射

    1 镜面 镜面光线传输计算 只涉及主光线计算而渲染出来的图像无法真实表现现实中的光线照射 通过增加能够反射光线的材质 进行空间中具有反射材质的对象之间的反射光线的追踪 可以更好地体现真实感 2 光线镜面反射的计算 当光线与包含反射材质的物体
  • Shell脚本之函数

    前言 接上回分析 关于shell脚本最后一节和拐友们讲一下最后的函数 因为shell函数经常会使用 目录 一 Shell函数 1 1Shell函数的基本格式 1 2 Shell函数的案例 1 3 函数返回值 1 4函数的传参 1 5函数变量
  • 完整的模糊推理系统介绍以及matlab中从零实现(上篇)

    模糊推理系统建模 在matlab中 通过调用文档命令doc fuzzy可以得到一个模糊工具箱的完整介绍 我也是因为工作需要 在看完师姐论文后 仍然迷迷糊糊地 相信有许多人和我一样 在网上查了一堆论文 博客 可能也没有搞得太明白 通过几天的认