文档介绍:C实现模糊控制算法
D
{
   Dn=-2;DF[0]=FMAX*((float)(-DFF[2]-D)/(DFF[3]-DFF[2]));
}
    else if(D<=-DFF[1])  
   {
    Dn=-1;
    DF[0]=FMAX*((float)(-DFF[1]-D)/(DFF[2]-DFF[1]));
   }
    else if(D<=DFF[0])  
   {
    Dn=0;
    DF[0]=FMAX*((float)(-DFF[0]-D)/(DFF[1]-DFF[0]));
   }
    else if(D<=DFF[1])  
   {
    Dn=1;
    DF[0]=FMAX*((float)(DFF[1]-D)/(DFF[1]-DFF[0]));
   }
    else if(D<=DFF[2])  
   {
    Dn=2; DF[0]=FMAX*((float)(DFF[2]-D)/(DFF[2]-DFF[1]));
   }
    else if(D<=DFF[3])  
   {
    Dn=3; DF[0]=FMAX*((float)(DFF[3]-D)/(DFF[3]-DFF[2]));
   }  
    }
else if(D<=-DFF[3])  
   {
    Dn=-2;
    DF[0]=FMAX;
   }
else if(D>=DFF[3])  
   {
   Dn=3;
   DF[0]=0;
   }
DF[1]=FMAX-DF[0];
/*使用误差范围优化后的规则表rule[7][7]*/
/*输出值使用13个隶属函数,中心值由UFF[7]指定*/
/*一般都是四个规则有效*/
Un[0]=rule[Pn-1+3][Dn-1+3];
Un[1]=rule[Pn+3][Dn-1+3];
Un[2]=rule[Pn-1+3][Dn+3];  
Un[3]=rule[Pn+3][Dn+3];
if(PF[0]<=DF[0])
   UF[0]=PF[0];
else
   UF[0]=DF[0];
if(PF[1]<=DF[0])
   UF[1]=PF[1];
else
   UF[1]=DF[0];
if(PF[0]<=DF[1])
   UF[2]=PF[0];
else
   UF[2]=DF[1];
if(PF[1]<=DF[1])
   UF[3]=PF[1];
else
   UF[3]=DF[1];
/*同隶属函数输出语言值求大*/
  
if(Un[0]==Un[1])
{
   if(UF[0]>UF[1])
    UF[1]=0;
   else
    UF[0]=0;
}
if(Un[0]==Un[2])
{
   if(UF[0]>UF[2])
    UF[2]=0;
   else
    UF[0]=0;