1

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

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

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

4

1 回答 1

1

类似于在感兴趣的频带周围执行两个(小得多)的 FFT

有,它叫做 Goertzel,是一种用于单个 bin 的 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”块定义包含此类抽头的变量)作为频带选择器。

于 2015-08-25T07:54:58.853 回答