gnurradio双音检测



我正试图想出一种有效的方法来表征大约900kHz分开的两个窄带音调(一个在100kHZ左右,一个在1MHz左右,一旦转换到基带)。随着时间的推移,它们的频率变化不大,但可能有我们想要监测的幅度变化。

每个音调大约100Hz宽,我们需要在很长一段时间内将这两个野兽的特征降低到大约0.1 Hz的分辨率。样品以超过2M样品/秒(TBD)的速度进入,以充分获取最高音调。

我试图避免(如果可能的话)每秒对数据进行一次蛮力>2MSample fft以提取频域数据。有没有有效的方法?类似于在感兴趣的波段周围执行两个(小得多的)fft ?我看过Goertzel和chirp z方法,但我不确定它是否有助于节省处理时间。

类似于在感兴趣的波段周围执行两个(更小)fft的东西

有,它被称为Goertzel,是一种单个箱子的FFT,你们已经看过了。它节省你的CPU时间。

无论如何,没有理由做2m点的FFT;首先,你只需要大约1/20采样率的分辨率,因此,20点FFT完全可以,并且在这些低速率下对你的CPU应该是相当可行的;既然你似乎不关心你的音调的相位,FFT->complex_to_mag.

然而,有一件事你应该一直做:看看你感兴趣的信号,然后抽取到正好适合的比率。由于GNU Radio的过滤器被巧妙地实现了,过滤器本身只会以十进制的速率运行,您可以将节省的CPU周期花在更好的过滤器上。

因为从2MHz到100Hz的直接抽取(抽取:20000)会有一个丑陋的滤波器长度,你应该这样做:

我会首先尝试抽取100,然后在第二步中抽取100,留下200Hz的可观测频谱。xlating fir滤波器块将允许您使用一个简单的低通滤波器(使用"low-pass filter Taps"块来定义包含此类水龙头的变量)作为带选择器。

最新更新