標題:
自己寫的模糊控制小程序
[打印本頁]
作者:
yqzxc123
時間:
2019-3-6 09:25
標題:
自己寫的模糊控制小程序
#include "include.h"
#include "fuzzy.h"
void fuzzyout(const FUZTAB *l_tab,s16 l_EE,s16 l_EEC,s16 *pout,s16 *iout,s16 *dout)
{
unsigned char i,j;
long psum=0,isum=0,dsum=0;
s16 l_BP[10]={0,0,0,0,0,0,0,0,0,0};
s16 l_BD[10]={0,0,0,0,0,0,0,0,0,0};
//先確定偏差位置,并求出占相鄰點比重
for(i=0;i<l_tab->cntrow;i++)
{
if(l_EE<=l_tab->Edot[i])break;
};
if(i==0)l_BP[0]=100;
else if(i==l_tab->cntrow)l_BP[l_tab->cntrow-1]=100;
else if(i>0 && i<l_tab->cntrow)
{
l_BP[i]=(long)100*(l_EE-l_tab->Edot[i-1])/(l_tab->Edot[i]-l_tab->Edot[i-1]);
l_BP[i-1]=(long)100*(l_tab->Edot[i]-l_EE)/(l_tab->Edot[i]-l_tab->Edot[i-1]);
}
//同理求出偏差微分的位置,并求出占相鄰點比重
for(j=0;j<l_tab->cntcolume;j++)
{
if(l_EEC<=l_tab->ECdot[j])break;
};
if(j==0)l_BD[0]=100;
else if(j==l_tab->cntcolume)l_BD[l_tab->cntcolume-1]=100;
else if(j>0 && j<l_tab->cntcolume)
{
l_BD[j]=(long)100*(l_EEC-l_tab->ECdot[j-1])/(l_tab->ECdot[j]-l_tab->ECdot[j-1]);
l_BD[j-1]=(long)100*(l_tab->ECdot[j]-l_EEC)/(l_tab->ECdot[j]-l_tab->ECdot[j-1]);
}
//求出該點在這個二維結構中所占比重
for(i=0;i<l_tab->cntrow;i++)
{
for(j=0;j<l_tab->cntcolume;j++)
{
psum+=(long)l_BP[i]*l_BD[j]*l_tab->ptab[i][j];
isum+=(long)l_BP[i]*l_BD[j]*l_tab->itab[i][j];
dsum+=(long)l_BP[i]*l_BD[j]*l_tab->dtab[i][j];
}
}
if(Mid_pro>-8&& Mid_pro<8 )
{
*pout=(s16)(0.9*psum/100);
*iout=(s16)(isum/100);
*dout=(s16)(1.1*dsum/100);
}
if(Mid_pro>8&& Mid_pro<16)
{
*pout=(s16)(1.1*psum/100);
*iout=(s16)(isum/100);
*dout=(s16)(0.8*dsum/100);
}
if(Mid_pro>-16&& Mid_pro<-8)
{
*pout=(s16)(1.1*psum/100);
*iout=(s16)(isum/100);
*dout=(s16)(0.8*dsum/100);
}
else
{
*pout=(s16)(psum/100);
*iout=(s16)(isum/100);
*dout=(s16)(dsum/100);
}
}
復制代碼
模糊.rar
2019-3-6 09:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.08 KB, 下載次數(shù): 15, 下載積分: 黑幣 -5
作者:
admin
時間:
2019-3-6 17:51
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者:
沐浴
時間:
2020-3-19 10:49
樓主你實現(xiàn)的功能是什么呀 能進一步交流嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1