我在MATLAB 2008 R2中的信号上添加了一些高斯白噪声
noisedSignal = awgn(signal, 25);% 25 is the SNR
但是当我计算noisedSignal
snr = GetSNR(noisedSignal, noisedSignal-signal);
和
function SNR = GetSNR(signal, errorSignal)
SNR = 20 * log10(sqrt(mean(signal.^2))/sqrt(mean(errorSignal.^2)));
end
计算的SNR
是1.1818而不是25.我缺少什么?
答案 0 :(得分:4)
你应该考虑到这一点:
awgn
假设信号具有单位功率SNR
的{{1}}参数以dB为单位请参阅以下示例:
awgn
这给出了
signal = randn(1,1e6); %// example signal with approximately unit power
S = mean(signal.^2); %// actual signal power
noisedSignal = awgn(signal, 25);
SN = mean(noisedSignal.^2); %// power of noised signal
N = mean((signal-noisedSignal).^2);
SN/N
10^(25/10)
所以计算出的SNR(ans =
316.9019
ans =
316.2278
)与期望值(SN/N
)非常相似。