首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向具有指定信噪比的信号中添加噪声

向具有指定信噪比的信号中添加噪声
EN

Stack Overflow用户
提问于 2018-04-19 19:44:58
回答 1查看 1K关注 0票数 2

我有一个余弦信号和一些干扰,包括正弦噪声信号和随机噪声信号。我试图把这些噪声信号加到信噪比为2 dB的余弦信号中。为此,我做了以下工作:

  • 首先,我增加了两个噪声信号,以得到一个单一的噪声信号;
  • 然后利用Parseval定理计算了每个信号的功率、余弦信号和新的合成噪声信号;
  • 然后,我用所需的功率编辑了噪声信号,通过将其归一化为当前功率的平方根并乘以所需功率的平方根来实现这种信噪比。所需功率来源于信噪比公式,即: 噪声功率=余弦信号的功率/10^信噪比/10;
  • 最后,我检查了新的信噪比,结果不是2 dB。

这是我的代码:

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-19 20:19:14

SNR通常使用基数-10的对数计算,这也与计算2dB:(10^(2/10))的方式相匹配。因此,在计算信噪比时,使用log10而不是log

代码语言:javascript
复制
>> SNR = 10*log10(signal_power/new_noisy_signal_power)
SNR =  2.0000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49929072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档