阈值传感器值

Thresholding a sensor value

起始位置:
我已将 distance Sensor 连接到 Arduino,并希望为我的项目获取最准确的值。

我的想法:
我的第一个想法是忽略最高和最低测量值并计算一个或多或少具有代表性的平均值,以便使用这些“修正值”。

我已经知道:
我已经知道如何计算 10 次测量的平均值(或本例中的 3 次):

correctedValue: (value1 + value2 + value3) / 3;

我的问题是什么:
我的问题是我不知道是否有图书馆或类似的东西可以解决我的“问题” .我找不到有用的教程或功能来实现我的目标,不幸的是我自己也不知道。

遍历列表一次,跟踪您看到的最大值和最小值的索引。为此,您可以首先将第一个元素(索引 0)同时标记为最小 (min_index) 和最大 (max_index)。然后将电流与那个进行比较。如果它更小,请将 min_index 设置为当前值。如果更大,将 max_index 设置为当前。

然后再次遍历链表,如果index既不是min_index也不是max_index.

则将当前值加到和

我会亲自执行 运行 平均值

#define FLEVEL 3
#define FIRSTVAL -1

unsigned char getRAverage(unsigned *last, unsigned char newval)
{
    if(*last == -1) 
    {
        *last = newval << FLEVEL;
        return newval;
    }
    *last -= (*last >> FLEVEL);
    *last += newval;
    return *last << FLEVEL;
}

对于其他绝望的人,这是我的解决方案。我在Python写了一个简化版,希望对你有帮助。请评论,如果有什么不对或者你可以编程更简单的东西。

value = [12, 3, 9, 34, 32]

min = value[0]
max = value[0]

if value[1] < min:
    min = value[1]

if value[2] < min:
    min = value[2]

if value[3] < min:
    min = value[3]

if value[4] < min:
    min = value[4]



if value[1] > max:
    max = value[1]

if value[2] > max:
    max = value[2]

if value[3] > max:
    max = value[3]

if value[4] > max:
    max = value[4]


avg = (((value[0] + value[1] + value[2] + value[3] + value[4]) - min) - max) / 3


print(min)
print(max)
print(avg)

输出(对于本例):

3
34
17.666666666666668