确定 C++ 向量中的下降/上升沿的简单算法是什么?

问题描述 投票:0回答:2

我正在轮询一个简单的传感器,它可以有一个非常急剧的下降或上升沿;这些值被读回一维标准向量。

我不想只使用硬编码触发值,因为它不够强大,无法适应具有不同灵敏度和基线值的不同传感器。我尝试通过低通滤波器处理矢量,但这会使信号失真,导致我不再获得明确的边缘。

我尝试寻找前一个样本的标准差超过下一个样本 6 倍的点,但这种方法非常容易受到噪声的影响。

如果有任何指点,我将不胜感激!

谢谢,

c++ algorithm vector
2个回答
2
投票

设置“太高而无法忽略”和“太低而无法忽略”的阈值。忽略中间的值。仅当超过阈值时才将值视为向上或向下。这个过滤器有一个名字(索贝尔?)。此刻我却忘记了。显然,当你从低到高时,你有一个上升沿;当你从高到低时,你就会有一个下降沿。


0
投票

我用 Raspberry Pi Pico 在 microPython 中进行了尝试:https://fritzenlab.net/2024/04/20/falling-and-rising-edge-input/。理论如下:在给定时刻,您有一个信号被认为是“低”,下次您验证它时,它是“高”。

您可以看到信号刚刚从“低”变为“高”的指示。当然,这是我对问题的简单看法,它没有考虑(大多数时候必要的)信号去抖。

您要求提供一个 C++ 示例,但我认为您可以轻松地改编我的 microPython 示例。

© www.soinside.com 2019 - 2024. All rights reserved.