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

📄 simupe_qpsk.m

📁 通信系统的GUI设计
💻 M
字号:
%File_C6:  simuPe_Qpsk.m
function [p]=simuPe_Qpsk(snr_in_dB)
%**** 对于给定信噪比的通信系统,估计差错概率 ****
%数据调制采用QPSK
% snr_in_dB:给定信噪比, dB为单位
%p:差错概率控制值

%****  参数设置部分  ****



m=10;
E=1;                      %信号能量归一化
SNR=10^(snr_in_dB/10);    %计算信噪比值
sgma=sqrt(E/(2*SNR));     %计算给定信噪比条件下信道加性白噪声的标准差
s11=-j;s10=-1;s00=j;s01=1;%定义QPSK信号:4种可能的取值

N=10000;
%产生待发送的二进制比特数据流:长度为2N
signal=rand(1,2*N);
qpsk=zeros(1,N);          %定义经过调制后的信号序列
%产生调制后的信号序列qpsk
for i=1:N
    if signal(2*i-1)<0.5
        if signal(2*i)<0.5
            qpsk(i)=s00;
        else qpsk(i)=s01;
        end;
    else
        if signal(2*i)<0.5
            qpsk(i)=s10;
        else qpsk(i)=s11;
        end;
    end;
end;

%用蒙特卡罗仿真估计差错概率
numoferr=0;                    %差错计数器初始化 
%传输N个数据符号,统计符号差错个数
for i=1:N
    %产生信道的复值加性白噪声
    n=gngauss(sgma,m)+j*gngauss(sgma,m);
    %接收机接收到的信号:考虑信道的加性白噪声
    r=qpsk(i)+n;
    
    %计算r在四种可能的qpsk信号上的投影
    d11=real(r*conj(s11));
    d10=real(r*conj(s10));
    d00=real(r*conj(s00));
    d01=real(r*conj(s01));
    %判决投影最大值
    d_max=max([d11  d10  d00  d01]);
    
    %检测判决接收到的QPSK信号
    if (d_max==d11)
        decis_qpsk=s11;
    elseif (d_max==d10)
        decis_qpsk=s10;
    elseif (d_max==d00)
        decis_qpsk=s00;
    else
        decis_qpsk=s01;
    end;
    
    %检测器判决结果与发送器发送的qpsk信号进行比较
    if(decis_qpsk~=qpsk(i))
        numoferr=numoferr+i;      %差错计数器累加1
    end;
end;

%计算差错概率的估计值
p=numoferr/N;
%End of script file

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -