找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1962|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

自己寫的模糊控制小程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:485147 發(fā)表于 2019-3-6 09:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include "include.h"
  2. #include "fuzzy.h"

  3. void fuzzyout(const FUZTAB *l_tab,s16 l_EE,s16 l_EEC,s16 *pout,s16 *iout,s16 *dout)
  4. {
  5.    unsigned char  i,j;
  6.    long psum=0,isum=0,dsum=0;
  7.    s16 l_BP[10]={0,0,0,0,0,0,0,0,0,0};
  8.    s16 l_BD[10]={0,0,0,0,0,0,0,0,0,0};
  9.    //先確定偏差位置,并求出占相鄰點(diǎn)比重
  10.    for(i=0;i<l_tab->cntrow;i++)
  11.    {   
  12.      if(l_EE<=l_tab->Edot[i])break;
  13.    };
  14.    if(i==0)l_BP[0]=100;
  15.    else if(i==l_tab->cntrow)l_BP[l_tab->cntrow-1]=100;
  16.    else if(i>0 && i<l_tab->cntrow)
  17.    {
  18.      l_BP[i]=(long)100*(l_EE-l_tab->Edot[i-1])/(l_tab->Edot[i]-l_tab->Edot[i-1]);
  19.      l_BP[i-1]=(long)100*(l_tab->Edot[i]-l_EE)/(l_tab->Edot[i]-l_tab->Edot[i-1]);  
  20.    }
  21.    //同理求出偏差微分的位置,并求出占相鄰點(diǎn)比重
  22.    for(j=0;j<l_tab->cntcolume;j++)
  23.    {
  24.      if(l_EEC<=l_tab->ECdot[j])break;
  25.    };
  26.    if(j==0)l_BD[0]=100;
  27.    else if(j==l_tab->cntcolume)l_BD[l_tab->cntcolume-1]=100;
  28.    else if(j>0 && j<l_tab->cntcolume)
  29.    {
  30.      l_BD[j]=(long)100*(l_EEC-l_tab->ECdot[j-1])/(l_tab->ECdot[j]-l_tab->ECdot[j-1]);
  31.      l_BD[j-1]=(long)100*(l_tab->ECdot[j]-l_EEC)/(l_tab->ECdot[j]-l_tab->ECdot[j-1]);  
  32.    }
  33.    //求出該點(diǎn)在這個(gè)二維結(jié)構(gòu)中所占比重
  34.    for(i=0;i<l_tab->cntrow;i++)
  35.    {  
  36.      for(j=0;j<l_tab->cntcolume;j++)
  37.      {
  38.        psum+=(long)l_BP[i]*l_BD[j]*l_tab->ptab[i][j];
  39.        isum+=(long)l_BP[i]*l_BD[j]*l_tab->itab[i][j];
  40.        dsum+=(long)l_BP[i]*l_BD[j]*l_tab->dtab[i][j];
  41.      }
  42.    }
  43.    if(Mid_pro>-8&& Mid_pro<8 )
  44.    {
  45.    *pout=(s16)(0.9*psum/100);
  46.    *iout=(s16)(isum/100);
  47.    *dout=(s16)(1.1*dsum/100);
  48.    }
  49.    if(Mid_pro>8&& Mid_pro<16)
  50.    {
  51.    *pout=(s16)(1.1*psum/100);
  52.    *iout=(s16)(isum/100);
  53.    *dout=(s16)(0.8*dsum/100);
  54.    }
  55.    if(Mid_pro>-16&& Mid_pro<-8)
  56.    {
  57.    *pout=(s16)(1.1*psum/100);
  58.    *iout=(s16)(isum/100);
  59.    *dout=(s16)(0.8*dsum/100);
  60.    }
  61.    else
  62.    {
  63.    *pout=(s16)(psum/100);
  64.    *iout=(s16)(isum/100);
  65.    *dout=(s16)(dsum/100);
  66.    }

  67. }
復(fù)制代碼


模糊.rar

1.08 KB, 下載次數(shù): 15, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-3-6 17:51 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

板凳
ID:490607 發(fā)表于 2019-3-14 13:48
樓主你好,我最近做畢設(shè),很需要有關(guān)模糊控制的知識(shí)。不知道能不能加個(gè)聯(lián)系交流下?

地板
ID:618513 發(fā)表于 2020-3-19 10:49 | 只看該作者
樓主你實(shí)現(xiàn)的功能是什么呀   能進(jìn)一步交流嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表