在频域与时域中添加噪声

信息处理 matlab 频谱 噪音 频域
2022-01-15 07:00:09

我正在尝试分析 SNR 级别对我的数据的影响。
我有一组频域信号,f_min = 0.5GHzf_max = 10.5GHz为中心f_c = 5.5GHz这些是模拟信号,无噪音(理想数据)。使用awgnMATLAB 的功能,我SNR = 10, 20, 30, 50 and 60dB在频域中添加了各种 SNR 级别 ( ) 的噪声。我现在需要将相同级别的 SNR 添加到他们的时域对应项中。

我遇到了一些我不太明白的事情。它如下:
SNR_freq从整个频率上的数据计算得出,而在实践中,SNR_time与脉冲数据相匹配,并从信号幅度的峰值 ( A_max) 计算得出,如下所示: SNR_freq = 10*log10(E/sigma^2) SNR_time = 20*log10(A_max/sigma) 其中sigma是信号的方差。

SNR_time之间究竟是什么关系SNR_freq

1个回答

我通常喜欢用我自己的代码添加噪音。
考虑到您拥有的信号,添加白噪声真的很容易。

您所需要的只是计算频率处的信号二阶矩并将噪声添加到频率区间,以便噪声的二阶矩产生您想要的 SNR。

由于 DFT 是酉变换,因此在频域添加白噪声相当于在时域添加噪声。

这里有 2 个选项,您是要添加白噪声(即遍布您的频率)还是频带限制(彩色)噪声?

对于白噪声,只需将噪声添加到频域中的每个 bin 中,以使噪声 Second Moment(均方乘以 bin 数量)达到您想要的 SNR。

对于有色噪声执行相同的操作,但仅针对相关的频率区间(其中二阶矩仅根据“活动”区间的数量计算)。