(25)QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真


前言

QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真MATLAB代码。


一、MATLAB仿真代码

代码如下:

nSamp = 8;                            % 矩形脉冲的采样点数
nSymbol = 1000000;                    % 传输的符号数
ts = 1/(nSymbol*nSamp);               % samples的时间序列
% t = (0:nSymbol*nSamp-1)*ts;

M = 4;                                % QPSK的调制阶数
k = log2(M);                          % 每个QPSK符号包含的比特数
SNR = -3:5;                           % 传输矩形脉冲成形信号,使用SNR (dB)
graycode = [0 1 3 2];                 % Gray编码映射表

BER_g = zeros(size(SNR));             % 初始化AWGN信道BER向量
SER_g = zeros(size(SNR));             % 初始化AWGN信道SER向量
BER_r = zeros(size(SNR));             % 初始化Rayleigh衰落信道BER向量
SER_r = zeros(size(SNR));             % 初始化Rayleigh衰落信道SER向量

% 生成Rayleigh衰落信道
fd = 10;                              % 最大多普勒频率,单位Hz
sinNum = 10;                          % 正弦波的数量
h = Jakes_Rayleigh(fd, sinNum, ts, nSymbol*nSamp);  % 生成Rayleigh衰落
    
%% QPSK信道仿真
for p=1:length(SNR)
    msg = randi([0 M-1], 1, nSymbol);               % 生成随机符号
    msg_gr = graycode(msg+1);                       % Gray编码映射
    msg_tx = pskmod(msg_gr, M);                     % QPSK调制
    msg_tx = rectpulse(msg_tx, nSamp);              % 矩形脉冲成形(插相同的值)

    % 使用AWGN信道
    msg_rx = awgn(msg_tx, SNR(p), '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编码逆映射
    [~, BER_g(p)] = biterr(msg, msg_demod, k);      % 计算BER
    [~, SER_g(p)] = symerr(msg, msg_demod);         % 计算SER
    
    msg_tx1 = h .* msg_tx;                          % 信号通过Rayleigh衰落信道
    msg_rx1 = awgn(msg_tx1, SNR(p), 'measured');    % 衰落信号通过AWGN信道
    msg_rx_down1 = intdump(msg_rx1,nSamp);          % 衰落信号匹配滤波相干解调
    msg_gr_demod1 = pskdemod(msg_rx_down1,M);       % QPSK解调
    msg_demod1 = graycode(msg_gr_demod1+1);         % Gray编码逆映射
    [~, BER_r(p)] = biterr(msg,msg_demod1,k);       % 计算BER
    [~, SER_r(p)] = symerr(msg, msg_demod1);        % 计算SER
end

%% 画图
figure()
semilogy(SNR,BER_g,'b-o',SNR,SER_g,'b-*',SNR,BER_r,'r-d',SNR,SER_r,'r-x')
grid on
legend('AWGN信道BER','AWGN信道SER', ...
       'Rayleigh+AWGN信道BER','Rayleigh+AWGN信道SER', ...
       'Location','southwest')
title('QPSK在AWGN和Rayleigh衰落信道下的性能')
xlabel('信噪比(dB)')
ylabel('误比特率和误符号率')

二、仿真结果

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值