产生噪声强度+ 4dB的信号

时间:2015-07-07 06:28:22

标签: matlab signal-processing

让我们假设我们有以下信号

fs=100;
ts=1/fs;
t=0:ts:2.93;
determ=40*sin(2*pi*10*t)+30*cos(2*pi*10.5*t);

我想产生具有确定性分量+ 4dB的噪声,而不是信号/噪声功率,反之亦然噪声/信号功率应为+ 4dB,我该怎么办?我知道通常会产生噪音

noise=randn(size(t));

但是如何计算噪声幅度? Here也是信号噪声计算公式的一些帮助。

1 个答案:

答案 0 :(得分:0)

在这个问题中你想设置噪声信号的放大,因此首先尝试找到这个噪声信号的SNR noise=randn(size(t));

SNR = 10*log10( mean(noise.^ 2)/mean(signal .^ 2) )

现在将噪声乘以增益系数(比如a),这将给出-4dB的比率。

-4   = 10*log10( mean(a^2*noise.^2)/mean(signal.^2) )
-4   = 10*log10( a^2*mean(noise.^2)/mean(signal.^2) )
-4   = 10*( log10(a^2) + log10( mean(noise.^2)/mean(signal.^2) ) )
-4   = 10*( log10(a^2) + SNR )
-0.4 = 2*log10(a) + SNR
-0.4-SNR = 2*log10(a)
a = 10^(-0.2-SNR/2)

result = a*noise;

希望这会有所帮助

编辑:为了更清楚,在上面的划痕后我们有代码:

noise = randn(size(t)); SNR = 10*log10( mean(noise.^ 2)/mean(signal .^ 2) ); result = 10^(-0.2-SNR/2) * noise;