⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qammoto.m

📁 计算OAM的系统误码率的matlab仿真程序与说明文档
💻 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 + -