QPSK调制在AWGN和Rayleigh信道下的误码率和误比特率性能对比-【附MATLAB完整代码】

1 信道

信道是通信系统不可缺少的部分之一。信道是将来自发送端的信号传送到接收端的理媒质,可以分为有线信道无线信道。信道的质量影响着信号的接收和解调,这种影响体现在两个方面:一方面信号在实际信道中传输时,由于信道特性不理想会引起信号波形失真。另一方面信道中在在各种噪声会干扰信号的传输。信道通常可以分为加性高斯白噪声信道、多径 Rayleigh 衰落信道和 Rician 衰落信道等。

2 加性高斯白噪声信道

信号在信道传输的过程中,不可避免地会受到各种干扰,这些干扰统称为“噪声”。加性高斯白噪声(Additive White Gaussian Noise,AWGN)是最常见的一种噪声,它存在于各种传输媒质中,包括有线信道和无线信道。加性高斯白噪声表现为信号围绕平均值的一种机波动过程。加性高斯白噪声的均值为0,方差是噪声功率的大小。一般情况下,噪声功越大,信号的波动幅度就越大,接收端接收到的信号的误比特率就越高。在研究通信系统的提码率与信道质量的关系时,一般先研究它在AWGN 信道下的性能,然后再把它推广到具有快衰落的复杂情况。

   msg_rx = awgn(msg_tx, SNR(ii), 'measured');      % AWGN信道

3 Rayleigh信道

Rayleigh信道是一种经典的无线信道模型,常用于描述没有直射路径(非视距,NLoS)且多径传播显著的无线通信环境,例如城市中的复杂环境。它假设接收到的信号是多个反射信号的叠加,信道增益服从Rayleigh分布

在仿真过程中,假设传输比特数为:num_symbols,经过Rayleigh信道,可以表示为:

h_rayleigh = (1/sqrt(2)) * (randn(1, length(msg_tx)) + 1i * randn(1, length(msg_tx)));% Rayleigh信道
msg_tx_rayleigh = h_rayleigh .* msg_tx+noise; % 信号经过Rayleigh信道

4 仿真结果

1.该程序用Matlab实现了基带信号调制的方式实现QPSK调制和解调过程,用scatter polt画出可视化的散点图
2.该程序模拟了QPSK调制经过AWGN信道下的误码率和误比特率的性能
3.该程序模拟了QPSK调制在AWGN和Rayleigh信道下的误码率和误比特率性能对比 

%% author:闲鱼/b站 ID:【不喜欢MIMO】
clear;          % 清除工作区的所有变量
clc;            % 清除命令窗口的内容

% 参数初始化
nsamp = 2;                      % 每符号的采样数
numsymbol = 1e6;                % 符号数目
ts = 1 / (nsamp * numsymbol);   % 每采样点时间间隔
t = (0:nsamp*numsymbol-1) * ts; % 时间向量
M = 4;                          % 调制阶数 (QPSK)
grayencod = [0 1 3 2];          % Gray编码表,用于降低误码率
SNR = 0:8;                      % 信噪比范围 (dB)
EbN0 = 10.^(SNR/10);
% 遍历每个信噪比点,进行信号调制、传输与解调
for ii = 1:length(SNR)
    % 生成随机符号信息
    msg = randi([0 3], 1, numsymbol); % 生成均匀分布的随机符号 (0-3)
    
    % Gray编码
    msg_gr = grayencod(msg + 1);      % 对符号进行Gray编码
    
    % QPSK调制
    msg_tx = pskmod(msg_gr, M);       % QPSK调制
    msg_tx = rectpulse(msg_tx, nsamp); % 矩形脉冲成型,增加采样率
    noise = sqrt(1/(2*EbN0(ii))) * (randn(1, length(msg_tx)) + 1i*randn(1,length(msg_tx)));
    % Rayleigh信道
    h_rayleigh = (1/sqrt(2)) * (randn(1, length(msg_tx)) + 1i * randn(1, length(msg_tx))); % Rayleigh信道
    msg_tx_rayleigh = h_rayleigh .* msg_tx+noise;      % 信号经过Rayleigh信道
    
    % AWGN信道
    msg_rx_awgn = awgn(msg_tx, SNR(ii), 'measured');              % 仅AWGN信道
    msg_rx_rayleigh = awgn(msg_tx_rayleigh, SNR(ii), 'measured'); % Rayleigh + AWGN信道
    
    % 信号下采样
    msg_rx_down_awgn = intdump(msg_rx_awgn, nsamp);                       % AWGN信号下采样
    msg_rx_down_rayleigh = intdump(msg_rx_rayleigh./h_rayleigh, nsamp);   % Rayleigh信号下采样
    
    % QPSK解调
    msg_gr_demod_awgn = pskdemod(msg_rx_down_awgn, M);         % AWGN信道解调
    msg_gr_demod_rayleigh = pskdemod(msg_rx_down_rayleigh, M); % Rayleigh信道解调
    
    % 逆Gray编码
    [dummy, graydecod] = sort(grayencod);                     % 构造逆Gray编码表
    graydecod = graydecod - 1;                                % 调整索引到符号范围
    msg_demod_awgn = graydecod(msg_gr_demod_awgn + 1);        % AWGN信道逆Gray解码
    msg_demod_rayleigh = graydecod(msg_gr_demod_rayleigh + 1);% Rayleigh信道逆Gray解码
    
    % 误码率 (BER) 和符号错误率 (SER) 计算
    [errorBit, BER_awgn(ii)] = biterr(msg, msg_demod_awgn, log2(M));    % AWGN信道 BER
    [errorBit, BER_rayleigh(ii)] = biterr(msg, msg_demod_rayleigh, log2(M)); % Rayleigh信道 BER
    [errorSym, SER_awgn(ii)] = symerr(msg, msg_demod_awgn);             % AWGN信道 SER
    [errorSym, SER_rayleigh(ii)] = symerr(msg, msg_demod_rayleigh);     % Rayleigh信道 SER
end
scatterplot(msg_tx(1:5000));    %画出发射信号前10000个元素星座图
title('发射信号星座图');
xlabel('同相分量');
ylabel('正交分量');
scatterplot(msg_rx_awgn(1:5000)); %画出接收信号前10000个元素星座图
title('接收信号星座图');
xlabel('同相分量');
ylabel('正交分量');
hold off;

% 绘制BER和SER的曲线
figure;
semilogy(SNR,BER_awgn,'-ro',SNR,SER_awgn,'-r*'); %画出BER和SER随SNR变化的曲线
legend('BER','SER');
title('QPSK在AWGN信道下的性能-闲鱼ID【不喜欢MIMO】');
xlabel('信噪比(dB)');
ylabel('SER and BER');

figure;
semilogy(SNR, BER_awgn, '-ro', SNR, SER_awgn, '-r*', ...
         SNR, BER_rayleigh, '-ko', SNR, SER_rayleigh, '-k*', 'LineWidth', 0.75);
legend('AWGN信道BER', 'AWGN信道SER', 'AWGN+Rayleigh衰落BER', 'AWGN+Rayleigh衰落SER', 'Location', 'southwest');
title('QPSK在AWGN和Rayleigh信道下的性能-闲鱼ID【不喜欢MIMO】');
xlabel('SNR (dB)');             
ylabel('SER and BER');          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值