Matlab筆記——AWGN函數詳解與實例——AWGN加性高斯白噪聲+QPSK調製

MATLAB 與 FPGA無線通信、圖像處理、數字信號處理(數字濾波器)、信道編碼系列

加性高斯白噪聲(Additive White Gaussian Noise)

awgn函數向信號中添加高斯白噪聲

1.Y = awgn(X,SNR)

向信號“X”添加高斯白噪聲,信噪比大小爲“SNR”,單位是dB;信號“X”的功率假定爲 0 dBW;如果“X”是複數,則添加的是復高斯白噪聲;

Example 1:

X = sqrt(2)*sin(0:pi/8:6*pi);% 設定一輸入信號X
% 假定X的功率爲0 dBW,加入高斯白噪聲,加入後信噪比SNR=10 dB
Y = awgn(X,10);			% 等價爲2中的Y = awgn(X,10,0); 

2.Y = awgn(X,SNR,SIGPOWER)

當參數“SIGPOWER”是一個數值的時候,代表輸入信號“X”的功率,單位是dBW;當參數“SIGPOWER”是“measured”的時候,在添加噪聲前會測量(計算)輸入信號“X”的功率;

Example 2:

X = sqrt(2)*sin(0:pi/8:6*pi);		% 設定一輸入信號X
% 設定X的功率爲5 dBW,加入高斯白噪聲,加入後信噪比SNR=10 dB
Y = awgn(X,10,5);				 
% 在加入噪聲前先測量信號X的功率,然後加入高斯白噪聲,加入後信噪比SNR=10 dB
Y = awgn(X,10,’measured’);

3.Y = awgn(X,SNR,SIGPOWER,S)

使用隨機流句柄“S”,用RANDN函數生成隨機噪聲樣本。如果“S”是整數,則將RANDN的狀態重置爲“S”。如果想要生成可重複的噪聲樣本,那麼提供一個隨機流的句柄(‘RandStream’),或者在默認隨機流上使用reset方法。

Y = awgn(X,SNR,SIGPOWER,STATE)

將RANDN狀態重置爲參數“STATE”指定的狀態。這種用法是不贊成的,可能在將來的版本中被刪除。

Example 3:

X = sqrt(2)*sin(0:pi/8:6*pi);				% 設定一輸入信號X
S = RandStream('mt19937ar','seed',5489);	% 由RandStream隨機數據流產生隨機數據
% 指定X的功率爲0 dBW,添加要產生的噪聲,SNR爲10dB,利用本地隨機流
Y = awgn(X,10,0,S);

4.Y = awgn(…, POWERTYPE)

使用參數“POWERTYPE”來指定信噪比“SNR”和信號功率“SIGPOWER”的單位。參數“POWERTYPE”可以選擇爲“db”或“linear”。如果“POWERTYPE”爲“db”,則信噪比“SNR”以db爲單位進行表示,“SIGPOWER”用dBW爲單位進行表示。如果“POWERTYPE”是“linear”,那麼信噪比“SNR”是按比例來測量的,而“SIGPOWER”是按瓦特來測量的。

Example 4:

X = sqrt(2)*sin(0:pi/8:6*pi);		% 設定一輸入信號X
% 指定X的功率爲3瓦,並向其添加噪聲,設定線性信噪比爲4
Y = awgn(X,4,3,'linear');
% 指定X的功率爲3 dBW,並向其添加噪聲,信噪比SNR爲4 dB
Y = awgn(X,4,3,'dB');
% 在加入噪聲前先測量信號X的功率,然後加入高斯白噪聲,設定線性信噪比爲4,
Y = awgn(X,4,'measured','linear');

5.pskmod(data_in, M)

M = 4;							%調製階數
data = randi([0 M-1],1000,1);	%生成隨機序列作爲待調製信號
txSig = pskmod(data,M,pi/M);	%調製,頻偏pi/4
rxSig = awgn(txSig,20);			%白噪聲,SNR=20dB
scatterplot(txSig)				%繪製發送信號的星座圖
scatterplot(rxSig)				%繪製接收信號的星座圖

在這裏插入圖片描述
在這裏插入圖片描述

MATLAB 與 FPGA無線通信、圖像處理、數字信號處理(數字濾波器)、信道編碼系列

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章