admin 发表于 2022-10-18 23:00:36

QPSK在AWGN信道下的仿真代码

%QPSK调制的数字通信系统通过AWGN信道后的误符号率和误比特率
%发射端信息比特采用格雷编码
%基带脉冲采用矩形脉冲,每个脉冲的抽样点数为8
%接收端采用匹配滤波器进行相干解调
clc;
nSamp = 8;          %矩形脉冲取样点数
numSymb = 1000000;%每种SNR下传输的符号数
M=4;                %PSK为4相位,即QPSK,有四种符号类型
SNR=-3:0.5:3;         %信噪比范围
grayencod=;%所采用的格雷码数组
for ii=1:length(SNR)
    msg=randsrc(1,numSymb,);       %产生发送符号(数字信号),是一个1000000位的数组,元素随机在0~3之间

    msg_gr=grayencod(msg+1);            %进行格雷编码映射,0、1、2、3分别对应0、1、3、2
    msg_tx=pskmod(msg_gr,M);            %进行4符号(4相位)PSK调制(QPSK)
    msg_tx=rectpulse(msg_tx,nSamp);   %矩形脉冲成型
   =periodogram(msg_tx,Nfft,Fs,window,Noverlap,'dflag');
   
    msg_rx=awgn(msg_tx,SNR(ii),'measured');%通过awgn信道
   
   
    msg_rx_down=intdump(msg_rx,nSamp);%匹配滤波相干解调
    msg_gr_demod=pskdemod(msg_rx_down,M);%QPSK解调
    =sort(grayencod);%dummy是grayencod的排序结果,graydecod是dummy中对应元素在grayencod中的位置索引
    graydecod = graydecod-1;            
    msg_demod=graydecod(msg_gr_demod+1);%进行格雷解码映射,0、1、3、2分别对应0、1、2、3
    =biterr(msg,msg_demod,log2(M));%errorBit为错误比特个数,BER(ii)为误比特率,log2(M)表示每个码元由2个bit组成
    =symerr(msg,msg_demod);%errorSym为错误码元个数,SER(ii)为误比特率
end
scatterplot(msg_tx(1:100))
title('发射信号星座图')
xlabel('同向分量')
ylabel('正交分量')
scatterplot(msg_rx(1:100))
title('接收信号星座图')
xlabel('同向分量')
ylabel('正交分量')
figure
semilogy(SNR,BER,'-ro',SNR,SER,'-r*')
legend('BER','SER')
title('QPSK在AWGN信道下的性能')
xlabel('信噪比(dB)')
ylabel('误符号率和误比特率')
页: [1]
查看完整版本: QPSK在AWGN信道下的仿真代码