菜鸟四轴吧 关注:226贴子:381
  • 6回复贴,共1

对加速度滑动滤波,有疑惑。

只看楼主收藏回复

对加速度进行滑动滤波的时候 为什么 只赋值了一次就进入for循环 加了20次
FILTER_NUM;=20;
void Prepare_Data(T_int16_xyz *acc_in,T_int16_xyz *acc_out)
{
static uint8_t filter_cnt=0;
static int16_tACC_X_BUF[FILTER_NUM],ACC_Y_BUF[FILTER_NUM],ACC_Z_BUF[FILTER_NUM];
ACC_X_BUF[filter_cnt] = acc_in->X;
ACC_Y_BUF[filter_cnt] = acc_in->Y;
ACC_Z_BUF[filter_cnt] = acc_in->Z;
for(i=0;i<FILTER_NUM;i++)
{
temp1 += ACC_X_BUF[i];
temp2 += ACC_Y_BUF[i];
temp3 += ACC_Z_BUF[i];
}//为什么 只赋值了一次就进入for循环 加了20次
acc_out->X = temp1 / FILTER_NUM;
acc_out->Y = temp2 / FILTER_NUM;
acc_out->Z = temp3 / FILTER_NUM;
filter_cnt++;
if(filter_cnt==FILTER_NUM)filter_cnt=0;
}


1楼2015-06-08 16:53回复
    第一行代码 FILTER_NUM;=20; ????? 怎么中间有个分号


    IP属地:北京2楼2015-06-09 09:32
    回复
      代码最好上截图 这样直接贴上来看起来太乱了


      IP属地:北京3楼2015-06-09 09:33
      收起回复


        4楼2015-06-09 14:23
        收起回复
          类似于一阶惯性滤波的思想,会使变化更加平滑。
          每次只引入一个新值,那么旧值占的比重很大,新值对结果的改变就会减弱。


          IP属地:重庆5楼2015-06-13 00:57
          回复