0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MATLAB学习笔记之模糊算法3

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-27 14:28 次阅读

1.4.2 C语言代码

#include 
#include 
#include 
#define  N  7                      //定义量化论域模糊子集的个数
//模糊语言定义
#define  NB  -3
#define  NM  -2
#define  NS  -1
#define  ZO  0
#define  PS  1
#define  PM  2
#define  PB  3
struct
{
  //规则表
  int rule[ N ][ N ] ;                //模糊规则表
  //隶属度函数
  char *f_type_e ;                  //e的隶属度函数类型
  char *f_type_de ;                  //de的隶属度函数类型
  char *f_type_u ;                  //u的隶属度函数类型
  float paras_e[ 3*N ] ;                //e的隶属度函数的参数
  float paras_de[ 3*N ] ;              //de的隶属度函数的参数
  float paras_u[ 3*N ] ;                //u的隶属度函数的参数
  //模糊运算参数
  float Ke ;                    //Ke=n/emax,量化论域为[-3,-2,-1,0,1,2,3]
  float Kde ;                    //Ke=n/demax,量化论域为[-3,-2,-1,0,1,2,3]
  float Ku ;                    //Ke=umax/n,量¢化论域为[-3,-2,-1,0,1,2,3]
  float umax ;                    //输出的上限
  float emax ;                    //误差基本论域上限
  float demax ;                    //误差变化率基本论域的上限
  //控制目标参数
  float target ;                  //控制目标
  float actual ;                  //实际值
  float e ;                    //误差
  float e_pre ;                    //上一次的误差
  float de ;                    //误差的变化率
}_fuzzy_;
/*******************************************************
Name      :trimf
Function    :三角隶属度函数
Parameter  :
      x:自变量
      (a,b,c):定义域
Return    :结果
*******************************************************/
float trimf( float x, float a, float b, float c )
{
  float u ;
  if( ( x>=a )&&( x<=b ) )
    u = ( x-a )/( b-a ) ;
  else if( ( x>b )&&( x<=c ) )
    u = ( c-x )/( c-b ) ;
  else
    u = 0 ;
  return u ;
}
/*******************************************************
Name      :gaussmf
Function    :正态隶属度函数
Parameter  :
      x:自变量
      ave:均值
      sigma:方差
Return    :结果
*******************************************************/
float gaussmf( float x, float ave, float sigma )
{
  float u ;
  if( sigma<0 )
    printf("方差不允许小于0\\n");
  else
    u = exp( -pow( ( ( x-ave )/sigma ), 2 ) ) ;
  return u ;
}
/*******************************************************
Name      :trapmf
Function    :梯形隶属度函数
Parameter  :
      x:自变量
      (a,b,c,d):定义域
Return    :结果
*******************************************************/
float trapmf( float x, float a, float b, float c, float d )
{
  float u ;
  if( ( x>=a )&&( xelse if( ( x>=b )&&( x

**
最终代码运行结果如下图所示。

参考于CDSN

**

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模糊控制
    +关注

    关注

    2

    文章

    261

    浏览量

    25476
  • 模糊算法
    +关注

    关注

    0

    文章

    16

    浏览量

    8734
  • 自然语言
    +关注

    关注

    1

    文章

    286

    浏览量

    13322
收藏 人收藏

    评论

    相关推荐

    matlabdsp学习

    matlabdsp学习
    发表于 07-05 17:20

    FCM聚类算法以及改进模糊聚类算法用于医学图像分割的matlab源程序

    FCM聚类算法以及改进模糊聚类算法用于医学图像分割的matlab源程序
    发表于 05-11 23:54

    算法图解学习笔记分享

    算法图解学习笔记03:分而治之
    发表于 06-05 17:42

    PID算法模糊PID 精选资料推荐

    这方面的需求而设计的。专家算法模糊算法都归属于智能算法的范畴,智能算法最大的优点就是在控制模型未知的情况下,可以对模型进行控制。这里需要注
    发表于 07-19 06:29

    求大佬分享MatLab学习笔记

    求大佬分享MatLab学习笔记
    发表于 11-19 07:00

    PID算法学习笔记分享

    最近在学习与无人机有关的一些控制算法,在这里做一些笔记,今天学的是有关于PID的算法。什么是PID首先关于PID的定义,因为我本身不是自动控制专业出身所以对于概念这个东西比较
    发表于 01-14 06:50

    模糊PID控制及其MATLAB仿真

    模糊PID控制及其MATLAB仿真,主要是MATLAB仿真,对于研究模糊PID算法有借鉴意义
    发表于 11-12 17:15 0次下载

    模糊推理的Mamdani算法及其Matlab实现

    模糊滤波的mamdani算法及其Matlab实现
    发表于 11-17 18:23 40次下载

    基于模糊高斯学习策略的粒子群进化融合算法

    针对粒子群优化(PSO)算法存在的开发能力不足,导致算法精度不高、收敛速度慢以及微分进化算法具有的探索能力偏弱,易陷入局部极值的问题,提出一种基于模糊高斯
    发表于 11-27 17:35 1次下载

    流形学习LLE算法的配套Matlab源码汇总

    流形学习LLE算法的配套Matlab源码汇总
    发表于 08-25 09:30 1次下载

    OpenStackCinder学习笔记

    OpenStackCinder学习笔记(开关电源技术教程ppt)-该文档为OpenStackCinder学习
    发表于 09-23 12:40 5次下载
    OpenStack<b class='flag-5'>之</b>Cinder<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    基于深度学习的图像去模糊算法及应用

    当前,绝大部分基于深度学习的图像去模糊算法是不区分场景的,也就是他们是对常见的自然与人为设计的场景进行去模糊。但是,在现实生活中,经常会遇到一些特定场景的图像去
    的头像 发表于 10-28 16:00 2457次阅读

    MATLAB学习笔记模糊算法1

    所谓模糊控制,就是对难以用已有规律描述的复杂系统,采用自然语言(如大,中,小)加以描述,借助定性的,不精确的以及模糊的条件语句来表达,模糊控制是一种基于语言的智能控制。
    的头像 发表于 02-27 14:28 2609次阅读
    <b class='flag-5'>MATLAB</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>模糊</b><b class='flag-5'>算法</b>1

    MATLAB学习笔记模糊算法2

    所谓模糊控制,就是对难以用已有规律描述的复杂系统,采用自然语言(如大,中,小)加以描述,借助定性的,不精确的以及模糊的条件语句来表达,模糊控制是一种基于语言的智能控制。
    的头像 发表于 02-27 14:28 1641次阅读
    <b class='flag-5'>MATLAB</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>模糊</b><b class='flag-5'>算法</b>2

    MATLAB学习笔记WM算法

    在现代智能控制算法中,模糊控制是在实际控制系统设计中使用比较成熟的一种方法。模糊控制可以使用在一些无法建立系统模型的场合,根据专家经验确定模糊规则,实现对系统的控制。
    的头像 发表于 02-27 14:40 1219次阅读
    <b class='flag-5'>MATLAB</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b>WM<b class='flag-5'>算法</b>