【发布时间】:2018-04-19 19:44:58
【问题描述】:
我有一个余弦信号和一些由正弦噪声信号和随机噪声信号组成的干扰。我正在尝试将这些噪声信号添加到 SNR 为 2 dB 的余弦信号中。为此,我做了以下工作:
- 首先,我将两个噪声信号相加得到一个噪声信号;
- 然后我使用 Parseval 定理计算了每个信号的功率、余弦信号和新的合成噪声信号;
-
然后我编辑了具有所需功率的噪声信号,以通过其当前功率的平方根对其进行归一化并将其乘以所需功率的平方根来实现此 SNR。所需功率由 SNR 的公式得出:
噪声功率=余弦信号功率/10^SNR/10;
最后,我检查了新的 SNR,结果不是 2 dB。
这是我的代码:
fs=250;
n=0:1/fs:4;
interference=sin(2*pi*(50)*n); % interference signal
random_noise=rand(size(n)); % random noise signal
noise_signal=interference+random_noise;% determinning the tottal noisy signal that will be added later
signal= cos(2*pi*(50)*n); % Definning signal of interest
signal_power=sum(abs(signal.^2)) ; %u sing parseval's theorem
current_noisy_signal_power=sum(abs(noise_signal.^2)); % using parseval's theorem
pn=signal_power/(10^(2/10)); % required SNR =2dB
new_noisy_signal=(noise_signal./sqrt(current_noisy_signal_power)).*sqrt(pn); % normalizing the noisy signal to get unity power then multiplying it by the new power to achieve the required SNR
new_noisy_signal_power=sum(abs(new_noisy_signal.^2));
SNR=10*log(signal_power/new_noisy_signal_power)
那么我的代码有什么问题?为什么 SNR 不是 2 dB?
【问题讨论】:
-
我看到了项目描述和代码,但我缺少 question 和答案站点的问题部分。
-
非常感谢@Adriaan 的回复,但很遗憾我听不懂您的意思
-
他要你问一个问题。您所做的只是发布代码并谈论它。问题是什么?
-
我敢打赌你得到一个“未知变量或函数”错误,你使用
noisy_signal,但从不定义它。请在将问题编辑为问题时修复您的代码。 -
好吧,抱歉。我已经编辑了我的问题
标签: matlab