欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
陀螺儀模糊控制2維三角形算法程序源碼
[打印本頁]
作者:
666lihua
時間:
2018-4-5 20:31
標題:
陀螺儀模糊控制2維三角形算法程序源碼
互相交流
模糊控制2維三角形算法如下:
#include "Fuzzy.h"
//二維模糊控制系統
//輸入方向偏差與陀螺儀Y軸數據,控制輸出方向P
float Angle_E[3] = {5,10,15}; //角度偏差
float Gyro_E[3] = {10,15,30}; //角速度數據
float Shell_P[3] = {10,15,40}; //外層比例控制系數
//由于所測數據均為單向數據,故規則表擬定為單向
int rule[3][3]=
{
{2,1,0},
{1,1,0},
{0,0,0},
};
float Fuzzy_Shell_P(float E_angle,float E_gyro);
float Fuzzy_Shell_P(float E_angle,float E_gyro)
{
float angle_err=0,gyro_err=0;
int angle_N=0,gyro_N=0; //隸屬語言值
int num=0;
float fuzzy_P=0;
//記錄隸屬函數的輸出值
float Angle_Fzy[2] ={0.0,0.0};
float Gyro_Fzy[2] ={0.0,0.0};
float Shell_P_Fzy[3] ={0.0,0.0,0.0};
// /*----- 數據更新-----*/
// Shell_P[1] = P_Direction_low;
// Shell_P[2] = P_Direction_high;
//將數據取絕對值,數據的正負僅代表左右
ABS_val(E_angle,angle_err);
ABS_val(E_gyro,gyro_err);
/*----- Angle 隸屬函數描述-----*/
if(angle_err<Angle_E[0]) //1
{
Angle_Fzy[0] =1.0;
angle_N = 0;
}
else if(angle_err<Angle_E[1]) //2
{
Angle_Fzy[0] = (Angle_E[1]-angle_err)/(Angle_E[1]-Angle_E[0]);
angle_N = 0;
}
else if(angle_err<Angle_E[2]) //3
{
Angle_Fzy[0] = (Angle_E[2]-angle_err)/(Angle_E[2]-Angle_E[1]);
angle_N = 1;
}
else
{
Angle_Fzy[0] =0;//4
angle_N =1;
}
Angle_Fzy[1] = 1.0 - Angle_Fzy[0];//隸屬函數輸出值
/*----- Pre_dirr 變化隸屬函數描述-----*/
if(gyro_err<Gyro_E[0])//當陀螺儀Y軸數據小于40時,對應三角隸屬函數的隸屬度為1,方向量度模糊等級為0級
{
Gyro_Fzy[0] =1;
gyro_N = 0;
}
else if(gyro_err<Gyro_E[1])//當陀螺儀Y軸數據小于70時,對應三角隸屬函數的隸屬度根據公式得出,方向量度模糊等級為0級,此時為40三角形的右邊一半
{
Gyro_Fzy[0] = (Gyro_E[1] - gyro_err)/(Gyro_E[1]-Gyro_E[0]);
gyro_N = 0 ;
}
else if(gyro_err<Gyro_E[2])//當陀螺儀Y軸數據小于160時,對應三角隸屬函數的隸屬度根據公式得出,方向量度模糊等級為1級,此時為70三角形的左邊一半
{
Gyro_Fzy[0] = (Gyro_E[2] - gyro_err)/(Gyro_E[2]-Gyro_E[1]);
gyro_N = 1;
}
else //當陀螺儀Y軸數據大于160時,對應三角隸屬函數的隸屬度根據公式得出,方向量度模糊等級為1級,此時為70三角形的右邊一半
{
Gyro_Fzy[0] =0.0;
gyro_N = 1;
}
//一個數據在三角形隸屬度函數中對應著兩個相鄰三角形中的隸屬度,兩個隸屬度和為1
Gyro_Fzy[1] = 1.0 - Gyro_Fzy[0];
/*查詢模糊規則表*/
//查表的時候不單單查詢一個規則,而是向右向下拓展成一個規則正方形查詢
num =rule[gyro_N][angle_N];
Shell_P_Fzy[num] += Gyro_Fzy[0]*Angle_Fzy[0];
num =rule[gyro_N+1][angle_N];
Shell_P_Fzy[num] += Gyro_Fzy[1]*Angle_Fzy[0];
num =rule[gyro_N][angle_N+1];
Shell_P_Fzy[num] += Gyro_Fzy[0]*Angle_Fzy[1];
num =rule[gyro_N+1][angle_N+1];
Shell_P_Fzy[num] += Gyro_Fzy[1]*Angle_Fzy[1];
/*面積中心法解模糊*/
fuzzy_P=Shell_P_Fzy[0]*Shell_P[0]+Shell_P_Fzy[1]*Shell_P[1]+Shell_P_Fzy[2]*Shell_P[2];
return(fuzzy_P);
}
復制代碼
所有資料51hei提供下載:
Fuzzy.zip
(1.27 KB, 下載次數: 19)
2018-4-5 20:31 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1