<thead id="6dxzi"><s id="6dxzi"></s></thead>

    <strike id="6dxzi"><object id="6dxzi"><label id="6dxzi"></label></object></strike>

      <track id="6dxzi"><b id="6dxzi"></b></track>
    <th id="6dxzi"><input id="6dxzi"></input></th>

    <i id="6dxzi"><nobr id="6dxzi"></nobr></i>

    傳感器3種常用算法處理,收藏!

    2020-6-22 9:30:00
    • 在傳感器使用中,我們常常需要對傳感器數(shù)據(jù)進(jìn)行各種整理,讓應(yīng)用獲得更好的效果。

    在傳感器使用中,我們常常需要對傳感器數(shù)據(jù)進(jìn)行各種整理,讓應(yīng)用獲得更好的效果,以下介紹幾種常用的簡單處理方法:

    1.加權(quán)平滑:平滑和均衡傳感器數(shù)據(jù),減小偶然數(shù)據(jù)突變的影響;

    2.抽取突變:去除靜態(tài)和緩慢變化的數(shù)據(jù)背景,強(qiáng)調(diào)瞬間變化;

    3.簡單移動(dòng)平均線:保留數(shù)據(jù)流最近的K個(gè)數(shù)據(jù),取平均值;

    01加權(quán)平滑

    使用算法如下:

    (新值) = (舊值)*(1 - a) + X *_a其中a為設(shè)置的權(quán)值,X為最新數(shù)據(jù),程序?qū)崿F(xiàn)如下:

    float ALPHA = 0.1f;_

    public void onSensorChanged(SensorEvent event){

    x = event.values[0];_

    y = event.values[1];_

    z = event.values[2];_

    mLowPassX = lowPass(x,mLowPassX);_

    mLowPassY = lowPass(x,mLowPassY);_

    mLowPassZ = lowPass(x,mLowPassZ);_

    }

    private float lowPass(float current,float last){

    return last *_(1.0f - ALPHA) + current *_ALPHA;_

    }

    02抽取突變采用上面加權(quán)平滑的逆算法

    實(shí)現(xiàn)代碼如下:

    public void onSensorChanged(SensorEvent event){

    final float ALPHA = 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];_

    }

    03簡單移動(dòng)平均線

    保留傳感器數(shù)據(jù)流中最近的K個(gè)數(shù)據(jù),返回它們的平均值。k表示平均“窗口”的大??;

    實(shí)現(xiàn)代碼如下:

    public class MovingAverage{

    private float circularBuffer[];_//保存?zhèn)鞲衅髯罱腒個(gè)數(shù)據(jù)

    private float avg;_//返回到傳感器平均值

    private float sum;_//數(shù)值中傳感器數(shù)據(jù)的和

    private float circularIndex;_//傳感器數(shù)據(jù)數(shù)組節(jié)點(diǎn)位置

    private int count;public MovingAverage(int k){

    circularBuffer = new float[k];_

    count= 0;_

    circularIndex = 0;_

    avg = 0;_

    sum = 0;_

    }

    public float getValue(){

    return arg;_

    }

    public long getCount(){

    return count;_

    }

    private void primeBuffer(float val){

    for(int i=0;i

    circularBuffer = val;_

    sum += val;_

    }

    }

    private int nextIndex(int curIndex){

    if(curIndex + 1 >= circularBuffer.length){

    return 0;_

    }

    return curIndex + 1;_

    }

    public void pushValue(float x){

    if(0 == count++){

    primeBuffer(x);_

    }

    float lastValue = circularBuffer[circularIndex];_

    circularBuffer[circularIndex] = x;_//更新窗口中傳感器數(shù)據(jù)

    sum -= lastValue;_//更新窗口中傳感器數(shù)據(jù)和

    sum += x;_

    avg = sum / circularBuffer.length;_//計(jì)算得傳感器平均值

    circularIndex = nextIndex(circularIndex);_

    }

    }

    『本文轉(zhuǎn)載自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系刪除』

    <thead id="6dxzi"><s id="6dxzi"></s></thead>

      <strike id="6dxzi"><object id="6dxzi"><label id="6dxzi"></label></object></strike>

        <track id="6dxzi"><b id="6dxzi"></b></track>
      <th id="6dxzi"><input id="6dxzi"></input></th>

      <i id="6dxzi"><nobr id="6dxzi"></nobr></i>
      国产久久久久久久久久久 | 在线看片色 | 青青草免费公开视频 | 国产三级网站在线观看 | 台湾精品一区二区三区 | 日倝黄色视屏 | 免费久久女人-级毛片视频 | 午夜无码成人 | 91n-最新地址发布页 | 国产六区色婷婷 |