給訊號新增高斯白噪聲
阿新 • • 發佈:2019-02-17
想往一個訊號中加入高斯白噪聲,信噪比為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 函式:
'linear'引數說明此處的噪聲訊號是以瓦特(W)為單位的,需要給出噪聲的絕對功率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;