?? qammoto.m
字號:
function [p]=qammoto(snr_in_dB)
%對預先設定信噪比的QAM系統的誤碼率進行仿真
%snr_in_dB為系統的信噪比,單位為dB
N = 1000;
d = 1;
Eav=10*d^2;
snr = 10^(snr_in_dB/10); %信噪比
sgma = sqrt(Eav/(8*snr)); %噪聲功率
M = 16; %信號點數
for i=1:N
temp=rand;
dsource(i)=1+floor(M*temp); %隨機選取
end;
mapping=[-3*d 3*d;
-d 3*d; d 3*d; 3*d 3*d; -3*d d;
-d d; d d; 3*d d; -3*d -d;
-d -d; d -d; 3*d -d; -3*d -3*d;
-d -3*d; d -3*d; 3*d -3*d;]; %星座圖
for i=1:N
qam_sig(i,:)=mapping(dsource(i),:); %取信號點
end;
for i=1:N
n=gngauss(sgma); %產生gauss隨機噪聲
r(i,:)=qam_sig(i,:)+n; %在信號上疊加噪聲
end;
numoferr=0; %初始誤碼率置為0
for i=1:N
for j=1:M
metrics(j)=(r(i,1)-mapping(j,1))^2+(r(i,2)-mapping(j,2))^2;
end %計算D(r,sm)
[min_metric decis]=min(metrics);
if(decis~=dsource(i)) %如果錯誤誤碼率加1
numoferr=numoferr+1;
end
end
p=numoferr/(N); %返回結果
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -