模糊PID控制的C程序_第1页
模糊PID控制的C程序_第2页
模糊PID控制的C程序_第3页
模糊PID控制的C程序_第4页
模糊PID控制的C程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上/e:-3,3 ec:-3,3 kp:-0.3,0.3#include #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);float cuf(float x,float a,float b,float c);float ufl(float x,float a,float b);float cufl(float x,float a,float b);float uf

2、r(float x,float a,float b);float cufr(float x,float a,float b);float ufr(float x,float a,float b);float cufr(float x,float a,float b);float fand(float a,float b);float forr(float a,float b);float FuzzyKp(float e,float ec);/主程序void main() float a,b,Kp; printf(The E is:); scanf(%f,&a); printf(The Ec i

3、s:); scanf(%f,&b); Kp=FuzzyKp(a,b); printf(The parameter Kp is: %fnn,Kp);float FuzzyKp(float e,float ec)float es7;float ecs7;/*模糊推理规则的可信度通过取小点运算得到*/float form77;/(表X7)(隶属度表)int i,j;/*求得的最大值赋给formab*/int a=0,b=0;float lsd;int p;float detkp;/*/int kp77=PB,PB,PM,PS,PS,ZO,ZO, PB,PB,PM,PS,PS,ZO,NS, PM,PM

4、,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;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,-3,-1);/ececsNM=uf(ec,-3,-2,0);ecsNS=uf(ec,-3,-1,1);ecsZO=

5、uf(ec,-2,0,2);ecsPS=uf(ec,-1,1,3);ecsPM=uf(ec,0,2,3);ecsPB=ufr(ec,1,3);for(i=0;i7;i+)float w,h,r; for(j=0;j7;j+) h=esi;r=ecsj;w=fand(h,r);formij=w; for(i=0;i7;i+) for(j=0;j7;j+) if(formabformij) a=i; b=j; lsd=formab;/es和ecs最值中的最大值p=kpab;if(p=NB)detkp=cufl(lsd,-0.3,-0.1);else if(p=NM)detkp=cuf(lsd,-0

6、.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);return detkp;/*以下为附属子函数*/*求隶属度(三角形)模糊化处理*/float uf(float x,float a,float b,float c)if(x=a)ret

7、urn (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,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(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;/*梯形反模糊化*/float cufr(float x,float a,float b)return (b-a)*x +a;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论