?? qammoto.m
字號:
function [p]=qammoto(snr_in_dB)
N=1000;
d=1; %符號間的最小距離d
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); %產生高斯隨機噪聲
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;
[min_metric decis]=min(metrics);%存儲距離最小值 及其 最小值的下標
if(decis~=dsource(i))
numoferr=numoferr+1; %若出現錯誤情況 誤比特數增加1
end;
end;
p=numoferr/(N);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -