我有一个数字流(为了讨论而整数)从模拟输入(连接到电位器的a / d转换器)中采样。我很好奇我如何实时识别数字中的模式。
也就是说,如果有人快速将锅一直向上和向下翻转,我怎么认识到这一点,如果只将它转向一半。或者如果他们连续三次上下调整怎么办?如何将这些操作转换为不同的“事件”?这对我来说似乎特别棘手,因为每个事件发生的时间窗口都是适度变化的。
我可以想到一些快速,黑客的方法,但我没有信心。我也很好奇如何将其扩展到多个不同的输入(即从光谱仪输入)。这会改变事情吗?我甚至不确定我应该用Google搜索哪个主题区域。
答案 0 :(得分:1)
如果您知道要查找的内容,请将输入信号与您期望的副本相关联。基本上,实现匹配的过滤器。如果要查看输入流何时为-127,-63,0,63,127,请使用这些值作为系数实现直接形式的fir过滤器。然后在输出上查找最大值。当滤波器中的数据为-127,-63,0,63,127时,会出现具有这些系数的滤波器的最大输出。
Google“匹配滤镜检测”或“检测理论”甚至可能是“特征检测”
如果您不确切地知道自己在寻找什么,或者您正在寻找的是可变的,那就会变得更加复杂。然后,您将尝试实现一个过滤器,其输出将为您提供有关正在进行的操作的信息。我上面给出的示例将显示输入序列发生时的输出尖峰。如果您随后看到以常规频率发生尖峰,您会猜测输入事件是以常规频率发生的。
如果你制作过滤器0,63,127 63 0,这与将旋钮一直向上旋转相关,然后再次向下,并且在输出上看到上述尖峰发生,但具有较低的最大振幅和相关性发生的时间越长,这可能会告诉你知识已经一直向上然后向下,但要比设计滤波器的速度更慢或更快以获得最大响应。
为了解决这个问题,您可以并行实现其中3个滤波器,一个用于慢速旋钮转动,一个用于中速旋钮转动,一个用于快速旋钮转动。然后查看3个输出,您将获得3种不同的相关性,这些相关性可以更好地帮助您了解正在发生的事情
答案 1 :(得分:0)
您是否考虑过采用信号的差异(差异化)?