OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4042|回复: 7

对滑动滤波的疑惑

[复制链接]

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
发表于 2015-6-9 19:27:22 | 显示全部楼层 |阅读模式
5金钱
 我是要对加速度计进行滤波。
这是滑动滤波的定义:连续取N个采样值看成一个循环队列,队列的长度固定为N
,每次采样到一个新数据
放入队尾并扔掉原来队首的一个数据(
先进先出原则),滤波器每次输出的数据总是当前队列中的N个数据的算术平均值。
[mw_shl_code=c,true]void Prepare_Data(T_int16_xyz *acc_in,T_int16_xyz *acc_out)// 滑动平均滤波 得到加速度的值 { static uint8_t filter_cnt=0; static int16_t ACC_X_BUF[FILTER_NUM],ACC_Y_BUF[FILTER_NUM],ACC_Z_BUF[FILTER_NUM]; int32_t temp1=0,temp2=0,temp3=0; uint8_t i; 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; temp2 += ACC_Y_BUF; temp3 += ACC_Z_BUF; } 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; }[/mw_shl_code]

  只赋值了一次就进入for循环 加了20次 。但他这个数组是静态变量的数组, 最后还是全赋值了 ,只要调用20次。

   为什么我觉得这只是一个算是平均滤波。和滑动平均滤波的定义说的不一样。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-3-9
在线时间
9 小时
发表于 2015-6-9 20:14:14 | 显示全部楼层
来来,我是一个白菜,菜菜菜。。。。。
回复

使用道具 举报

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
 楼主| 发表于 2015-6-9 22:29:39 | 显示全部楼层
回复【2楼】tuy0326:
---------------------------------
对吧  我从一个四轴的程序上摘来的
回复

使用道具 举报

4

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-3-9
在线时间
9 小时
发表于 2015-6-9 23:40:04 | 显示全部楼层
我怎么觉得第一次运行的时候这些采集了一个数据,然后第一个数据假设是50,那么再假设FILTER_NUM=50,那么是不是意味着,第一次的时候50+了49个0,然后结果还是50再除以50的话,值是不是1?
来来,我是一个白菜,菜菜菜。。。。。
回复

使用道具 举报

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
发表于 2015-6-10 07:48:22 | 显示全部楼层
@魂淡  为什么我觉得这只是一个算是平均滤波。和滑动平均滤波的定义说的不一样。 
这个算法没什么问题,新进来的数据和前19个数据取平均值,这就是滑动平均值滤波
回复

使用道具 举报

0

主题

133

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2014-12-21
在线时间
1 小时
发表于 2015-6-10 10:54:18 | 显示全部楼层
前期需要采集20次做初始化,之后才算是正常的滑动滤波。
流过汗水才能代表自己真的学会了如何不流汗。
回复

使用道具 举报

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
 楼主| 发表于 2015-6-15 16:58:21 | 显示全部楼层
回复【4楼】tuy0326:
----------------------------对啊,所以我觉得如果这样的话得采50次的值,才能得到一次滤波的值。
回复

使用道具 举报

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
 楼主| 发表于 2015-6-15 17:04:00 | 显示全部楼层
回复【5楼】阿拓:
--------------------------------谢谢。基本明白了,那么他初期应该要先采20次的值,是吧?
---------------------------------
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 09:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表