1. 程式人生 > >給訊號新增高斯白噪聲

給訊號新增高斯白噪聲

想往一個訊號中加入高斯白噪聲,信噪比為SNR,但之前將SNR加到40dB了都同步不上,感覺應該是函式用錯了,仔細看了下幫助文件,發現了問題。

以下是之前的程式:

SNR = 27;
tx_signal = awgn(tx_signal,SNR);
這個時候,會假設 tx_signal 的功率為0dBW,但實際上訊號可能比0dBW小,導致最後噪聲加得過大。

我們需在後面加一個'mwasured'的引數,表明在加噪聲之前實際測一下 tx_signal 的功率,加的噪聲是相對這個功率來說的。

SNR = 27;
tx_signal = awgn(tx_signal,SNR,'measured');
以上加噪聲的方法比較方便,下面我們也可以用 wgn 函式:
len = length(tx_signal);
signal_power = sum(abs(tx_signal).^2)/length(tx_signal)
noise_power=signal_power*(10^(-(SNR-0)/10))
noise = wgn(len,1,noise_power,'real','linear')';
rx_signal = rx_signal + noise;
'linear'引數說明此處的噪聲訊號是以瓦特(W)為單位的,需要給出噪聲的絕對功率