欢迎来到天天文库
浏览记录
ID:27847615
大小:26.50 KB
页数:5页
时间:2018-12-06
《传感器算法处理-加权平滑-简单移动平均线-抽取突变.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、传感器算法处理:加权平滑简单移动平均线抽取突变 通过利用先进的传感器库,智能手机和平板OEM厂商就能让开发者能够追踪智能手机和用户的移动轨迹。通过观察移动轨迹,应用程序就能让用户与设备以创新、方便的手势进行交互。例如,当用户把手机放在耳朵旁边的时候,程序就能自动接收音频指令。 然而,最流行的移动应用程序却不常用到传感器。应用程序开发者说用传感器很难,没错,这是因为传感器是用来度量物理环境的,但没有好的想法或用法,这些测量经常没有意义。 现在,传感器厂商意识到了算法和软件才是产品最基本的要素。独立的固件开发
2、者开发了传感器库,不但能保持传感器处在校准状态从而提供准确的导航,还能减轻外界电磁干扰造成的影响。 一、在传感器使用中,我们常常需要对传感器数据进行各种整理,让应用获得更好的效果,以下介绍几种常用的简单处理方法: 1.加权平滑:平滑和均衡传感器数据,减小偶然数据突变的影响; 2.抽取突变:去除静态和缓慢变化的数据背景,强调瞬间变化; 3.简单移动平均线:保留数据流最近的K个数据,取平均值; 二、加权平滑 使用算法如下: (新值)=(旧值)*(1-a)+X*a其中a为设置的权值,X为最新数据,程序实现如
3、下: floatALPHA=0.1f; publicvoidonSensorChanged(SensorEventevent){ x=event.values[0]; y=event.values[1]; z=event.values[2]; mLowPassX=lowPass(x,mLowPassX); mLowPassY=lowPass(x,mLowPassY); mLowPassZ=lowPass(x,mLowPassZ); } privatefloatlowPass(floatcurre
4、nt,floatlast){ returnlast*(1.0f-ALPHA)+current*ALPHA; } 三、抽取突变 采用上面加权平滑的逆算法。实现代码如下: publicvoidonSensorChanged(SensorEventevent){ finalfloatALPHA=0.8;gravity[0]=ALPHA*gravity[0]+(1-ALPHA)*event.values[0]; gravity[1]=ALPHA*gravity[1]+(1-ALPHA)*event.value
5、s[1]; gravity[2]=ALPHA*gravity[2]+(1-ALPHA)*event.values[2];filteredValues[0]=event.values[0]-gravity[0]; filteredValues[1]=event.values[1]-gravity[1]; filteredValues[2]=event.values[2]-gravity[2]; } 四、简单移动平均线 保留传感器数据流中最近的K个数据,返回它们的平均值。k表示平均“窗口”的大小; 实现代
6、码如下: publicclassMovingAverage{ privatefloatcircularBuffer[];//保存传感器最近的K个数据 privatefloatavg;//返回到传感器平均值 privatefloatsum;//数值中传感器数据的和 privatefloatcircularIndex;//传感器数据数组节点位置 privateintcount;publicMovingAverage(intk){ circularBuffer=newfloat[k]; count=0;
7、 circularIndex=0; avg=0; sum=0; } publicfloatgetValue(){ returnarg; } publiclonggetCount(){ returncount; } privatevoidprimeBuffer(floatval){ for(inti=0;i《circularbuffer.length;++i){ circularBuffer[i]=val; sum+=val; } } privateintnexTIndex(intcu
8、rIndex){ if(curIndex+1》=circularBuffer.length){ return0; } returncurIndex+1; } publicvoidpushValue(floatx){ if(0==count++){ primeBuffer(x); } floatlastValue=circularBuffe
此文档下载收益归作者所有