模糊pid的c语言程序.doc

上传人:土8路 文档编号:10294438 上传时间:2021-05-06 格式:DOC 页数:4 大小:21KB
返回 下载 相关 举报
模糊pid的c语言程序.doc_第1页
第1页 / 共4页
模糊pid的c语言程序.doc_第2页
第2页 / 共4页
模糊pid的c语言程序.doc_第3页
第3页 / 共4页
模糊pid的c语言程序.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《模糊pid的c语言程序.doc》由会员分享,可在线阅读,更多相关《模糊pid的c语言程序.doc(4页珍藏版)》请在三一文库上搜索。

1、论域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(ax)&(x=b)return (x-a)/(b-a);else if(bx)&(xc)return 0;/*三角形反模糊化处理*/float cuf(float x,float a,float b,f

2、loat 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(ax)&(xb)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(ax)&(x=b)return 1;

3、/*梯形反模糊化*/float cufr(float x,float a,float b)return (b-a)*x +a;/*求交集*/float fand(float a,float b)return (ab)?a:b;/*求并集*/float forr(float a,float b)return (ab)?b:a;/*主函数*/void main()/*模糊规则表*/int kp77=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

4、,NM,PS,ZO,NS,NM,NM,NM,NB,ZO,ZO,NM,NM,NM,NB,NB;esNB=ufl(e,-3,-1); esNM=uf(e,-3,-2,0);esNS=uf(e,-3,-1,1);esZO=uf(e,-2,0,2);esPS=uf(e,-1,1,3);esPM=uf(e,0,2,3);esPB=ufr(e,1,3);ecsNB=ufl(ec,-0.3,-0.1);/ececsNM=uf(ec,-0.3,-0.2,0);ecsNS=uf(ec,-0.3,-0.1,0.1);ecsZO=uf(ec,-0.2,0,0.2);ecsPS=uf(ec,-0.1,0.1,0.3)

5、;ecsPM=uf(ec,0,0.2,0.3);ecsPB=ufr(ec,0.1,0.3);/*模糊推理 规则的可信度通过取小点运算得到*/float form77;int i,j;for(i=0;i7;i+)float w,h,r; for(j=0;j7;j+)h=esi;r=ecsj;w=fand(h,r);formij=w;/*求得的最大值赋给formab*/int a=0,b=0;for(i=0;i7;i+)for(j=0;j7;j+)if(formabformij)a=i; b=j;float lsd;int p;lsd=formab;/es和ecs最值中的最大值p=kpab;flo

6、at 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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1