使用捕获信号和噪声的 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"中包含的噪声具有相同的特性(尤其是相同的平均功率)
顺便说一句,除非您还将中间信号用于其他目的,否则可以对您的流程图进行一些简化:
- 上下分支乘以同一个常数因子最终会在除法块中抵消。您可以完全省去缩放的麻烦。
- 从Parseval's theorem开始,频域中平方幅度的总和与时域中平方样本的总和成正比。因此不需要 FFT 块。
就是说,在您的流程图中,您使用了一些中间信号用于 GUI 输出。在这种情况下,您可以简单地将所需的常量缩放放在 Number Sink 之前。
我捕获了传输信号和无传输信号(即仅噪声)。我想计算信号的信噪比。我想确保以下 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"中包含的噪声具有相同的特性(尤其是相同的平均功率)
顺便说一句,除非您还将中间信号用于其他目的,否则可以对您的流程图进行一些简化:
- 上下分支乘以同一个常数因子最终会在除法块中抵消。您可以完全省去缩放的麻烦。
- 从Parseval's theorem开始,频域中平方幅度的总和与时域中平方样本的总和成正比。因此不需要 FFT 块。
就是说,在您的流程图中,您使用了一些中间信号用于 GUI 输出。在这种情况下,您可以简单地将所需的常量缩放放在 Number Sink 之前。