【问题标题】:How to ignore a noise value in real time?如何实时忽略噪声值?
【发布时间】:2022-01-06 18:09:36
【问题描述】:

我正在尝试制作一个警报程序,当高于 4.27v 时变为绿色,低于 -2.56v 时变为红色,并且在这些值之间没有光。我已经获得了一个数据集,我应该从中连续读取并相应地发出警报。但是当它处于高值时,数据中有一些噪音,我应该忽略这些噪音,这样警报就不会闪烁。

例如,如果读数变为4.30 > 4.40 > 4.20 > 4.50 > ...,我必须忽略4.20,并且警报必须保持绿色,不要关闭 1 秒钟然后再打开。

这是我尝试过的,但它仍然闪烁:

high_alarm = 4.27
low_alarm = -2.56
Q = 0.009765625

prev1 = 0
prev2 = 0

for i in range(120):
    volt_bit = my_daq.next_reading()
    volts = volt_bit * Q - 5
        
    prev2 = prev1
    prev1 = volts
        
    if volts > high_alarm:
        # green light
        bstick.set_color(index=6, name="green")
    elif volts <= high_alarm and volts >= low_alarm:
        if prev2 > prev1 and volts > prev1:
            continue
        lights_off()
    elif volts < low_alarm:
        # red light
        bstick.set_color(index=3, name="red")

我也有将前一个和下一个数据与当前值进行比较的想法,但这是不可能的,因为我必须实时进行,所以我不应该知道未来的读数,只知道当前和以前的读数.

如果有人想尝试,这里是闪烁的高值的示例数据集:

[991,
978,
962,
965,
959,
964,
945, # flickered here
956,
960,
959,
953]

【问题讨论】:

  • 大窗口的滑动平均呢?

标签: python noise


【解决方案1】:

解决这个问题的科学方法类似于this(基于数据流的稳健随机森林异常检测)。 根据异常分数,您可以直接控制警报,也可以训练神经网络为警报生成控制信号。

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2013-07-23
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多