如何根据信号的频谱计算信号的 SNR?

How can I calculate the SNR of a signal from its frequency spectrum?

我正在从频谱分析仪中提取数据,并尝试使用信号处理工具箱中的 snr 函数来计算信号的信噪比。问题是我得到的 SNR 值没有意义。我这样调用函数:

snr(power, freqValues, rwb, 'power')

我得到的snr值为-28.0343 +13.6438i,rwb = 1.8e4; snr 创建的图表如下所示: 作为参考,这是我捕获的频谱的样子: (这是从 plot(freqValues, power) 创建的) 频率范围为 0-2MHz,主峰位于 902kHz @10.4dBm。 感谢任何帮助。

当我阅读 snr() 的 MATLAB 文档时,我看到了以下内容。您输入的 powersxx 的格式不正确。

sxx — Power spectrum

nonnegative real-valued row or column vector

Power spectrum, specified as a real-valued nonnegative row or column vector.

The power spectrum must be expressed in linear units, not decibels. Use db2pow to convert decibel values to power values.