0

ここでは、いくつかの rssi 値の平均を計算するために必要な小さなコードを示します。

#include <stdio.h>
#include <math.h>

int main (void)
{

    int8_t rssi_linear_sum;
    int8_t rssi_val;
    int8_t rssi_avg;
    int8_t rssi_num = 0;
    
    int8_t get_rssi(int8_t i)
    {
            return i;
    }
    /* rssi_get() in my actual code is a function that gets rssi 
    values through a bluetooth service, it returns an int8_t value, for the 
    sake of concision, I replaced it with a loop that 
    would return similar values to what I get.*/ 

    for (int8_t i = -100; i <-10; i+=10)
    { 
        rssi_val= get_rssi(i);
        rssi_linear_sum += powf(10, (float)rssi_val / 20);
        rssi_num ++;
    } 
    rssi_avg = 20 * log10f(rssi_linear_sum / rssi_num);

    printf("%d",rssi_avg );
}

したがって、デシベル値の正確な平均を得るには、最初にそれらを線形化し、次に平均を取得する必要があることを知っています。私のコードがそれを完全に表現しているかどうかはわかりません。これはコードの質問というよりも論理的な質問ですが、これを行う関数を紹介するか、私の論理が実際に値の平均を取得することを確認してください。

4

0 に答える 0