gpt4 book ai didi

algorithm - 模式匹配检测信号边缘?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:25 24 4
gpt4 key购买 nike

我有一个模拟信号,我想检测边沿/“波形”。要检测的波形有时与下面的第一个示例一样简单(简单的上升沿),但也更复杂(例如上升沿和前面较小的“ Blob ”)。信号有噪声和不需要的较小信号,因此“匹配等级”0.0 到 1.0 之类的输出很适合设置阈值。另一个要求是检测时间:算法必须在 1 个“上升时间”内“触发”,如图像中的红色 Blob 圆圈。尽可能早,但不要在达到最大值之前。

一切都将在STM32 ARM Controller 上执行,信号每秒100点。侧翼上升沿需要 0.5 - 2 秒,因此要“查看”的数据范围约为 250 - 500 个数据点。

我读过相关性和 FFT,但如果我对主题的理解正确,这将仅适用于周期性波形(因为 FFT 会将信号分解为正弦/余弦部分)。

FFT 和相关性是否是正确的路径,或者是否有更好的方法来满足我们的要求?如果我们的路径是正确的,是否有推荐的文献/搜索词可以轻松进入该主题?

编辑:我添加了真实数据的例子。在 Picture 2您可以看到一个易于检测的边缘。使用基本的边缘检测,我们对这些边缘没有任何问题。

Picture 3我们的问题在于:我们当前的算法在 2565 秒检测边缘,但我们希望在 2574 秒检测。与要检测的边缘相比,第一个“ Blob ”总是出现在大约 40% - 85% 的信号电平中。

Sample waveforms to detect

example of good data

example of bad data

最佳答案

傅里叶级数是一个糟糕的选择,您完全正确,因为您要尝试写下没有边的数据描述,然后在该描述中发现边。效果不佳。

您可以采用的一种方法是执行类似傅里叶级数的方法,但使用更本地化的描述并包括看起来像边缘的东西。谷歌“小波边缘检测”以了解更多相关信息。这将允许您从嘈杂的数据中提取各种形式。例如,人们用它来从图片中提取边缘,从录音中提取音素。小波是一个很大的话题,但您也许可以找到一个库来做一些接近您想要的事情。

但对于像这样的简单一维问题,您可以简单地应用平滑操作,然后寻找感兴趣的形状。平滑操作越好,您可以容忍的噪声就越多,但看到形状就越难。

例如,您可以对平滑进行指数阻尼。 next_average = 0.9 * average + 0.1 * next_value。 (更普遍的是 (1 - x) * average + x * next_value。)这将使每个点看起来很像一个大约 10 个点的移动窗口的平均值。将现在的平均值与 100 点之前的平均值进行比较,您将能够非常可靠地发现上涨。更多的乱七八糟的东西,你可能会发现其他组合。

您必须仔细研究方程式和您的数据,才能找到适合您的目的的东西。

关于algorithm - 模式匹配检测信号边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36557608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com