生成噪声强度为 +4dB 的信号

Generate signal with noise intensity +4dB

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

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的噪声,而不是signal/noise功率,反之亦然noise/signal功率应该是+4dB,我该怎么做?我知道一般噪音都是由此产生的

noise=randn(size(t));

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

在这个问题中你想设置噪声信号的振幅,因此首先尝试找到这个噪声信号的信噪比 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;