自学内容网 自学内容网

(28)QPSK调制信号使用矩形脉冲成形的误符号率和误比特率MATLAB仿真


前言

在QPSK通信系统仿真时,经常会加入调制信号的脉冲成形模块,本文将讨论在这种情况下信道的信噪比该如何设置,并给出MATLAB仿真代码,画出性能曲线。


一、系统模型说明

发射端生成随机序列,然后进行格雷码映射,随后送入QPSK调制器,得到QPSK符号,对QPSK符号进行矩形脉冲成形。矩形脉冲成形完成QPSK符号的插值,插值因子是一个常数,决定了一个QPSK符号形成矩形脉冲的过程中重复的次数。

经矩形脉冲成形后的信号送入awgn信道,信道对信号叠加噪声后送至接收端。

在接收端,在一个调制符号的持续时间内对接收进行信号进行积分取均值,然后进行QPSK解调、格雷码逆映射。

最终对比收发符号,计算出误符号率误比特率,完成对系统的性能评估。

在整过程中,终端说明了矩形脉冲成形对系统性能的影响。

二、MATLAB仿真代码

代码如下:

clc
clear all
close all
nSamp = 8;                                                    % 矩形脉冲的取样点数
numSymb = 1000000;                                            % 每种SNR下的传输的符号数
M = 4;                                                        % QPSK符号集中的符号数
SNR = -3:5;                                                   % SNR的范围
graycode = [0 1 3 2];                                         % Gray编码格式

N = length(SNR);
BER = zeros(1,N);
SER = zeros(1,N);
BER2 = zeros(1,N);
SER2 = zeros(1,N);
for k = 1:N
    msg = randsrc(1,numSymb,(0:3));                            % 产生发送符号
    msg_gr = graycode(msg+1);                                 % 进行Gray编码影射
    msg_psk = pskmod(msg_gr,M);                                % QPSK调制,也即形成QPSK的星座
    msg_tx = rectpulse(msg_psk,nSamp);                         % 矩形脉冲成形(插相同的值)
  
    msg_rx = awgn(msg_tx,SNR(k),'measured');                  % 通过AWGN信道
    
    msg_rx_down = intdump(msg_rx,nSamp);                       % 匹配滤波相干解调 %intdump函数在一个符号周期内对信号msg_rx取平均值
    msg_gr_demod = pskdemod(msg_rx_down,M);                    % QPSK解调
    
    msg_demod = graycode(msg_gr_demod+1);                     % Gray码逆映射

    [errorBit, BER(k)] = biterr(msg, msg_demod, log2(M));     % 计算BER
    [errorSym, SER(k)] = symerr(msg, msg_demod);              % 计算SER
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 去掉成形滤波(每个符号一个采样值)
    msg_rx_psk = awgn(msg_psk,10*log10(nSamp)+SNR(k),'measured'); % 通过AWGN信道 % 其中nSamp是过采样倍数
    
    msg_gr_demod = pskdemod(msg_rx_psk,M);                    % QPSK解调
    msg_demod = graycode(msg_gr_demod+1);                     % Gray码逆映射


    [errorBit2, BER2(k)] = biterr(msg, msg_demod, log2(M));   % 计算BER
    [errorSym2, SER2(k)] = symerr(msg, msg_demod);            % 计算SER   
end
scatterplot(msg_tx(1:1000))                                   % 画出发射信号的星座图
grid on
title('发射信号星座图')
xlabel('同相分量')
ylabel('正交分量')

scatterplot(msg_rx(1:1000))                                   % 画出接收信号的星座图
grid on
title('接收信号星座图')
xlabel('同相分量')
ylabel('正交分量')

figure()
semilogy(SNR,BER,'-ro',SNR,SER,'-r*','LineWidth',1.5)         % 画出BER和SNR随SNR变化的曲线
grid on
legend('BER','SER')
title('QPSK在AWGN信道下的性能(使用矩形脉冲成形)')
xlabel('信噪比(dB)')
ylabel('误符号率和误比特率')


figure()
semilogy(SNR,BER2,'-ro',SNR,SER2,'-r*','LineWidth',1.5)       % 画出BER和SNR随SNR变化的曲线
grid on
legend('BER','SER')
title('QPSK在AWGN信道下的性能(不进行成形滤波,SNR提升8倍)')
xlabel('信噪比(dB)')
ylabel('误符号率和误比特率')

三、MATLAB仿真结果

发射端的信号星座图如下:

在这里插入图片描述

接收端收到的噪声信号星座图如下:

在这里插入图片描述

性能曲线如下:

在这里插入图片描述

在这里插入图片描述

QPSK的理论误码率性能MATLAB仿真代码见:
(7)MATLAB:QPSK理论误符号率和理论误比特率

四、仿真结果分析

仿真中,矩形脉冲成形对QPSK符号进行了8倍重复,这相当于增加了信号的能量。接收端对一个符号的持续时间内的采样值进行积分取均值,相当于取出一个QPSK符号,而在此过程中,8个采样值中叠加的噪声是零均值的,所以噪声在接收端的积分取均值的过程中相当于衰减了8倍。所以,对整个通信收发系统而言,相当于信噪比提升了8倍。



原文地址:https://blog.csdn.net/weixin_45333185/article/details/142862452

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!