莱斯信道衰落下的QPSK误码率分析

在无线信道中,莱斯分布是一种最常见的用于描述接收信号包络统计时变特性的分布类型。其中莱斯因子是反映信道质量的重要参数,在计算信道质量和链路预算、移动台移动速度以及测向性能分析等都发挥着重要的作用 [4] 。信号在传输过程中由于多径效应,接收信号是直射信号(主信号)和多径信号的叠加,此时接收信号的包络服从莱斯分布。事实上,在考虑多径效应的时候,原始信号与呈现瑞利分布的多径分量的和常常被描述为莱斯分布。
其中,莱斯分布的概率密度函数为
在这里插入图片描述
下面给出在莱斯信道衰落下的QPSK误码率分析代码。

clear all;
close all;
K_rice_dB=40;               %莱斯分布的增益
K_rice=10^(K_rice_dB/10);
M=4;                        %MPSK
k=log2(M);                  %每符号的比特数
N_sym=10;                   %分块处理,每个块含有的符号数
N_bit=k*N_sym;              %总共要处理的符号数
N_block=10000;              %块的数目
Es=1;                       %将每个符号的能量归一化    
Eb=Es/k;                    %计算每比特的能量   
Eb_N0_dB=0:1:10;            %初始化信噪比
Eb_N0=10.^(Eb_N0_dB/10);
N0=Eb./Eb_N0;               %计算噪声功率谱密度
len_EbN0=length(Eb_N0);

EbN0_pointer=1;
temp_EbN0_pointer=EbN0_pointer;
errs=zeros(1,len_EbN0);     %错误码元数目初始化
block_count=zeros(1,len_EbN0);
while (EbN0_pointer <= len_EbN0) && (block_count(len_EbN0) < N_block)
    B=round(rand(1,N_bit)); %产生随机二进制序列
    Dm=reshape(B,k,N_sym);  %矩阵转置
    D = Dm(1,:)+1i*Dm(2,:); %产生两路独立的二进制信号.
    Tx_data = sqrt(Eb) * (2*D-(1+1i));                      %发射双极性不归零二进制信号
    Noise=sqrt(0.5)*(randn(1, N_sym)+1i*randn(1, N_sym));   %高斯噪声
    h_ray=sqrt(0.5)*(randn(1,1)+1i*randn(1,1));             %瑞利衰落分布信道
    h_rice=(sqrt(K_rice)+h_ray)/sqrt(1+K_rice);             %莱斯衰落分布信道,这里要做归一化
    for n = EbN0_pointer : len_EbN
        Rx_data = h_rice*Tx_data + sqrt(N0(n))*Noise;       %接收端信号
        y=Rx_data/h_rice;                                   %信道增益
        Recov_Tx_data= sqrt(Eb)*(sign(real(y))+1i*sign(imag(y)));
        Recov_D = 0.5*(1+1i+Recov_Tx_data/sqrt(Eb));
        errs(n)= errs(n)+sum(abs(Recov_D-D).^2);            %计算错误比特数
        if errs(n)>=800
            temp_EbN0_pointer = temp_EbN0_pointer+1;
        end;
        block_count(n)=block_count(n)+1;                    %进入下一块循环
    end;
    EbN0_pointer=temp_EbN0_pointer;
    block_count
end; 
Num_BER = errs./(N_bit*block_count);                        %数值模拟误码率
Ana_BER=0.5*(1-sqrt(Eb_N0./(1+Eb_N0)));                     %理论误码率
figure;                                                     %做出误码率曲线
semilogy(Eb_N0_dB, Num_BER, '-s');
hold on;
semilogy(Eb_N0_dB, Ana_BER, 'r-*');
grid on;
Rician_legend=['Rician fading (K= ',num2str(K_rice_dB),' dB)'];
legend(Rician_legend, 'Rayleigh fading');
title('QPSK in Ricean Fading Channels');
xlabel('Eb/N0 (dB)');
ylabel('BER');
  • 6
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值