【问题标题】:How do I find a sequence of values with Python如何使用 Python 查找值序列
【发布时间】:2021-04-04 21:24:56
【问题描述】:

我得到了一系列音调,它描述了无线电传输的报头。我需要检测此标头来触发信号解码器功能。

信号图:

这是一个使用绘制的列表

ax1.plot(range(len(inst_fr)),inst_fr)

每个音的长度相同,有9个音,顺序如下(t1,t2,t1,t2,t3,t2,t3,t1)

考虑到这一点,检测此标头的最佳方法是什么

  • 这是一个由 9 个音调组成的序列
  • 有 3 种不同的音调
  • 每个音的长度相同
  • 我正在使用 scipy.io 进行音频/信号处理。

我开始使用一种方法来检测至少一个频率,比如1500,阈值为50

threshold = 50
freq = 1500
for idx,i in enumerate(inst_fr):
    if (freq - threshold) < i < (freq + threshold):
        print("%s \t %s" % (idx, i))

这里的问题是我得到了很多“误报”(实际上是真正的肯定)。而且我不确定如何继续检查频率 +/- 阈值是否在 ~1000 个样本的范围内匹配

【问题讨论】:

  • 您是否有一种方法虽然不是最好但仍然有效?
  • 添加了初始方法

标签: python signal-processing


【解决方案1】:

有很多方法可以解决这个问题,但复杂性和可靠性各不相同。

您可以使用理想的样本列表(即每个样本在正确的时间具有正确的水平)进行互相关,并设置一些阈值来检测互相关何时足够高到您喜欢的程度。

我能想到的最简单的方法是在每个符号周期的中间找到一系列样本的平均值,并忽略噪声中的任何异常值(例如 > 2500、

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多