Fuzzy_pid.zip

  • 临门
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 2
    下载次数
  • 2021-03-23 12:21
    上传日期
简易版的模糊PID,没有加具体模型,可以用。
Fuzzy_pid.zip
  • Fuzzy_KP.m
    2.4KB
  • pidpid.m
    1.6KB
  • Fuzzy_pid.m
    598B
内容介绍
function [kp] = Fuzzy_KP(e,ec) num=0; eRule=[-8,-5,-2,0,2,5,8]; ecRule=[-8,-5,-2,0,2,5,8]; eFuzzy=[0.0,0.0]; ecFuzzy=[0.0,0.0]; kpRule=[50,100,300,500]; KpFuzzy=[0.0,0.0,0.0,0.0]; KpRule=[3,3,3,3,3,3,3; 2,2,2,2,1,2,2; 1,1,1,1,1,1,1; 1,1,0,1,0,1,1; 0,0,1,0,0,1,0; 0,1,0,1,0,0,2; 3,3,3,3,3,3,3]; if ( e<eRule(1)) eFuzzy(1)=1.0; pe=1; elseif (eRule(1)<=e&&e<eRule(2)) eFuzzy(1)=(e-eRule(1))/(eRule(2)-eRule(1)); pe=1; elseif(eRule(2)<=e&&e<eRule(3)) eFuzzy(1)=(e-eRule(2))/(eRule(3)-eRule(2)); pe=2; elseif(eRule(3)<=e&&e<eRule(4)) eFuzzy(1)=(e-eRule(3))/(eRule(4)-eRule(3)); pe=3; elseif(eRule(4)<=e&&e<eRule(5)) eFuzzy(1)=(e-eRule(4))/(eRule(5)-eRule(4)); pe=4; elseif(eRule(5)<=e&&e<eRule(6)) eFuzzy(1)=(e-eRule(5))/(eRule(6)-eRule(5)); pe=5; elseif(eRule(6)<=e&&e<eRule(7)) eFuzzy(1)=(e-eRule(6))/(eRule(7)-eRule(6)); pe=6; else eFuzzy(1)=0.0; pe=6; end eFuzzy(2)=1-eFuzzy(1); if (ec<ecRule(1)) ecFuzzy(1)=1.0; pec=1; elseif (ecRule(1)<=ec&&ec<ecRule(2)) ecFuzzy(1)=(ec-ecRule(1))/(ecRule(2)-ecRule(1)); pec=1; elseif (ecRule(2)<=ec&&ec<ecRule(3)) ecFuzzy(1)=(ec-ecRule(1))/(ecRule(2)-ecRule(1)); pec=2; elseif (ecRule(3)<=ec&&ec<ecRule(4)) ecFuzzy(1)=(ec-ecRule(3))/(ecRule(4)-ecRule(3)); pec=3; elseif (ecRule(4)<=ec&&ec<ecRule(5)) ecFuzzy(1)=(ec-ecRule(4))/(ecRule(5)-ecRule(4)); pec=4; elseif (ecRule(5)<=ec&&ec<ecRule(6)) ecFuzzy(1)=(ec-ecRule(5))/(ecRule(6)-ecRule(5)); pec=5; elseif (ecRule(6)<=ec&&ec<ecRule(7)) ecFuzzy(1)=(ec-ecRule(6))/(ecRule(7)-ecRule(6)); pec=6; else ecFuzzy(1)=0; pec=6; end ecFuzzy(2)=1.0-ecFuzzy(1); num=KpRule(pe,pec)+1; KpFuzzy(num)=KpFuzzy(num)+eFuzzy(1)*ecFuzzy(1); num=KpRule(pe,pec+1)+1; KpFuzzy(num)=KpFuzzy(num)+eFuzzy(1)*ecFuzzy(2); num=KpRule(pe+1,pec)+1; KpFuzzy(num)=KpFuzzy(num)+eFuzzy(2)*ecFuzzy(1); num=KpRule(pe+1,pec+1)+1; KpFuzzy(num)=KpFuzzy(num)+eFuzzy(2)*ecFuzzy(2); kp=KpFuzzy(1)*kpRule(1)+KpFuzzy(2)*kpRule(2)+KpFuzzy(3)*kpRule(3)+KpFuzzy(4)*kpRule(4); end
评论
    相关推荐
    • 模糊PID C语言实现
      模糊PID控制的C语言实现,C语言开发方便移植
    • 超级全的模糊PID控制资料
      超级全的模糊PID资料,你想要的都在这里。
    • 电机的模糊PID控制
      电机转速和方向的准确控制,达到精准稳定。simulink模型复杂准确,更好的模拟 真实电机情况。硬件/机器人的电机控制提供参考
    • 模糊PID C 算法
      模糊PID C 算法,温控 这个是非常好用的模糊PID温度控制算法,已经在自己的项目中使用,你只需要按照自己的控制对象修改误差变化率最大值和误差阈值即可。
    • 自适应模糊PID
      自适应模糊PID控制,结合模糊控制、自适应控制以及PIDkongzhi
    • 模糊PID
      关于模糊pid一些算法学习,供初学者学习。
    • 自适应模糊PID
      模糊自适应PID控制是在PID算法的基础上,以误差e和误差变化率ec作为输入,利用模糊规则进行模糊推理,查询模糊矩阵表进行参数调整,来满足不同时刻的e和ec对PID参数自整定的要求。
    • 模糊PID代码.rar
      本文档可以实现模糊PID控制功能,供初学者借鉴~
    • 基于模糊PID算法的动力电池液体冷却策略_马彦.zip
      国家基金项目,主要用模糊pid算法实现动力电池液体冷却策略
    • 自适应模糊PID.rar
      在传统PID基础上,利用模糊逻辑算法对P I D 的参数进行优化,可以有更好的效果