我有一个余弦信号和一些干扰,包括正弦噪声信号和随机噪声信号。我试图把这些噪声信号加到信噪比为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)那么我的代码有什么问题呢?为什么信噪比2不是dB?
发布于 2018-04-19 20:19:14
SNR通常使用基数-10的对数计算,这也与计算2dB:(10^(2/10))的方式相匹配。因此,在计算信噪比时,使用log10而不是log:
>> SNR = 10*log10(signal_power/new_noisy_signal_power)
SNR = 2.0000https://stackoverflow.com/questions/49929072
复制相似问题