皇冠ag旗舰官网

皇冠ag旗舰官网品牌产品
【码农必看】Android编程中传感器常用算法处理
发布时间:2024-03-23
  |  
阅读量:
本文摘要:一、在传感器用于中,我们经常必须对传感器数据展开各种整理,让应用于取得更佳的效果,以下讲解几种常用的非常简单处置方法: 1.权重光滑:光滑和平衡传感器数据,增大无意间数据变异的影响; 2.提取变异:除去静态和较慢变化的数据背景,特别强调瞬间变化; 3.非常简单移动平均线:保有数据流最近的K个数据,所取平均值; 二、权重光滑 用于算法如下: (新值)=(旧值)*(1-a)+X*a 其中a为设置的权值,X为近期数据,程序实现如下: floatALPHA=0.1f; public

皇冠ag旗舰官网

一、在传感器用于中,我们经常必须对传感器数据展开各种整理,让应用于取得更佳的效果,以下讲解几种常用的非常简单处置方法:  1.权重光滑:光滑和平衡传感器数据,增大无意间数据变异的影响;  2.提取变异:除去静态和较慢变化的数据背景,特别强调瞬间变化;  3.非常简单移动平均线:保有数据流最近的K个数据,所取平均值;  二、权重光滑  用于算法如下:  (新值)=(旧值)*(1-a)+X*a  其中a为设置的权值,X为近期数据,程序实现如下:  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(floatcurrent,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.values[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个数据,回到它们的平均值。

皇冠ag旗舰官网

k回应平均值窗口的大小;  构建代码如下:  publicclassMovingAverage{  privatefloatcircularBuffer[];//留存传感器最近的K个数据  privatefloatavg;//回到到传感器平均值  privatefloatsum;//数值中传感器数据的和  privatefloatcircularIndex;//传感器数据数组节点方位  privateintcount;  publicMovingAverage(intk){  circularBuffer=newfloat[k];  count=0;  circularIndex=0;  avg=0;  sum=0;  }  publicfloatgetValue(){  returnarg;  }  publiclonggetCount(){  returncount;  }  privatevoidprimeBuffer(floatval){  for(inti=0;icircularBuffer[i]=val;  sum+=val;  }  }  privateintnextIndex(intcurIndex){  if(curIndex+1=circularBuffer.length){  return0;  }  returncurIndex+1;  }  publicvoidpushValue(floatx){  if(0==count++){  primeBuffer(x);  }  floatlastValue=circularBuffer[circularIndex];  circularBuffer[circularIndex]=x;//改版窗口中传感器数据  sum-=lastValue;//改版窗口中传感器数据和  sum+=x;  avg=sum/circularBuffer.。


本文关键词:皇冠ag旗舰官网,【,码农,必看,】,Android,编程,中,传感器,常用

本文来源:皇冠ag旗舰官网-www.payrentamerica.com

咨询电话
0931-551519744
公司地址:江苏省南京市玄武区玄武湖
邮箱:admin@payrentamerica.com
淘宝店铺:
Copyright © 2001-2023 www.payrentamerica.com. 皇冠ag旗舰官网科技 版权所有 ICP备55795625号-2