使用捕获信号和噪声的 PSD 计算 SNR

Calculating SNR using PSD of captured signal and noise

我捕获了传输信号和无传输信号(即仅噪声)。我想计算信号的信噪比。我想确保以下 GNURadio 流程图没有错:

总而言之,在计算出每个的 PSD 之后,"Integrate with Decimate over 2048" 块将 2048 个 FFT bin 的功率相加。然后,从信号 FFT 和中减去噪声 FFT 和。这除以噪声 FFT 总和并转换为 dB。

这是我的流程图的输出:

根据我的流程图计算,功率值为:

signal only, raw power: ~0.329  
noise only, raw power: 0.000007   
SNR in dB: ~46.6dB  

我正在使用 LoRa 节点传输感兴趣的信号;调制细节在这里:https://www.thethingsnetwork.org/docs/lorawan/#modulation-and-data-rate

信号占用捕获的带宽 (125k) 并以每秒 100 万个样本进行采样。

您的流程图应该在以下条件下为您提供正确的 SNR 值:

  • 信号源和噪声源不相关
  • 下分支捕获的"noise only"与上分支捕获的"signal + noise"中包含的噪声具有相同的特性(尤其是相同的平均功率)

顺便说一句,除非您还将中间信号用于其他目的,否则可以对您的流程图进行一些简化:

  1. 上下分支乘以同一个常数因子最终会在除法块中抵消。您可以完全省去缩放的麻烦。
  2. Parseval's theorem开始,频域中平方幅度的总和与时域中平方样本的总和成正比。因此不需要 FFT 块。

就是说,在您的流程图中,您使用了一些中间信号用于 GUI 输出。在这种情况下,您可以简单地将所需的常量缩放放在 Number Sink 之前。