收藏 分销(赏)

模糊PID的C语言程序.doc

上传人:丰**** 文档编号:4612386 上传时间:2024-10-07 格式:DOC 页数:4 大小:36KB 下载积分:5 金币
下载 相关 举报
模糊PID的C语言程序.doc_第1页
第1页 / 共4页
模糊PID的C语言程序.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
论域e:[-3,3] ec:[-0.3,0.3] kp:[-0.3,0.3] #define NB 0 #define NM 1 #define NS 2 #define ZO 3 #define PS 4 #define PM 5 #define PB 6 /**************求隶属度(三角形)模糊化处理***************/ float uf(float x,float a,float b,float c) { if(x<=a) return 0; else if((a<x)&&(x<=b)) return (x-a)/(b-a); else if((b<x)&&(x<=c)) return (c-x)/(c-b); else if(x>c) return 0; } /****************三角形反模糊化处理**********************/ float cuf(float x,float a,float b,float c) { float y,z; z=(b-a)*x+a; y=c-(c-b)*x; return (y+z)/2; } /*****************梯形(左)求隶属度 模糊化*******************/ float ufl(float x,float a,float b) { if(x<=a)  return 1; else if((a<x)&&(x<=b)) return (b-x)/(b-a); else if(x>b) return 0; } /*******************梯形反模糊化***********************/ float cufl(float x,float a,float b) { return b-(b-a)*x; } /*****************梯形(右)求隶属度 模糊化*******************/ float ufr(float x,float a,float b) { if(x<=a) return 0; if((a<x)&&(x<b)) return (x-a)/(b-a); if(x>=b) return 1; } /*******************梯形反模糊化***********************/ float cufr(float x,float a,float b) { return (b-a)*x +a; } /*******************求交集***********************/ float fand(float a,float b) { return (a<b)?a:b; } /*******************求并集***********************/ float forr(float a,float b) { return (a<b)?b:a; } /*******************主函数***********************/ void main() { /*******************模糊规则表***********************/ int kp[7][7]={{PB,PB,PM,PM,PS,ZO,ZO}, {PB,PB,PM,PS,PS,ZO,ZO}, {PM,PM,PM,PS,ZO,NS,NS}, {PM,PM,PS,ZO,NS,NM,NM}, {PS,PS,ZO,NS,NS,NM,NM}, {PS,ZO,NS,NM,NM,NM,NB}, {ZO,ZO,NM,NM,NM,NB,NB}}; es[NB]=ufl(e,-3,-1); es[NM]=uf(e,-3,-2,0); es[NS]=uf(e,-3,-1,1); es[ZO]=uf(e,-2,0,2); es[PS]=uf(e,-1,1,3); es[PM]=uf(e,0,2,3); es[PB]=ufr(e,1,3); ecs[NB]=ufl(ec,-0.3,-0.1);//ec ecs[NM]=uf(ec,-0.3,-0.2,0); ecs[NS]=uf(ec,-0.3,-0.1,0.1); ecs[ZO]=uf(ec,-0.2,0,0.2); ecs[PS]=uf(ec,-0.1,0.1,0.3); ecs[PM]=uf(ec,0,0.2,0.3); ecs[PB]=ufr(ec,0.1,0.3); /******模糊推理 规则的可信度通过取小点运算得到*****/ float form[7][7]; int i,j; for(i=0;i<7;i++) { float w,h,r; for(j=0;j<7;j++)  { h=es[i]; r=ecs[j]; w=fand(h,r); form[i][j]=w;  } } /*************求得的最大值赋给form[a][b]*********/ int a=0,b=0; for(i=0;i<7;i++) {  for(j=0;j<7;j++)  { if(form[a][b]<form[i][j])   { a=i; b=j;  } } } float lsd;int p; lsd=form[a][b];//es和ecs最值中的最大值 p=kp[a][b]; float detkp; if(p==NB) detkp=cufl(lsd,-0.3,-0.1); else if(p==NM) detkp=cuf(lsd,-0.3,0.2,0); else if(p==NS) detkp=cuf(lsd,-0.3,0.1,0.1); else if(p==ZO) detkp=cuf(lsd,-0.2,0,0.2); else if(p==PS) detkp=cuf(lsd,-0.1,0.1,0.3); else if(p==PM) detkp=cuf(lsd,0,0.2,0.3); else if(p==PB) detkp=cufr(lsd,0.1,0.3); float kpint; kpint+=detkp; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服