在无线信道中,莱斯分布是一种最常见的用于描述接收信号包络统计时变特性的分布类型。其中莱斯因子是反映信道质量的重要参数,在计算信道质量和链路预算、移动台移动速度以及测向性能分析等都发挥着重要的作用 [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');