數字通信—BPSK在Rayleigh信道下誤碼率仿真


1 實驗原理

在本實驗中均是假設的准靜態平坦衰落,即多徑中每個徑到達的時間差都 差不多,遠小於一個符號的碼元周期。而且信道隨時間變化比較慢,在一個時 間選擇性衰落的周期內。這樣經過信道的相移就可以准確估計出來,首先根據 上個實驗已知 BPSK 調制在 AWGN 信道下的誤碼率為:

\[P_{e}=\mathrm{Q}\left(\sqrt{\frac{2 \varepsilon_{b}}{N_{0}}}\right) \tag{1} \]

由於可以估計出相位,此時的接收信號可以用下式表示:

\[r(t)=\alpha s(t)+n(t) \tag{2} \]

其中 $ \alpha$ 就是對信號幅度的影響,即服從瑞利分布。對於某一個特定的 \(\alpha\),此時的接收端信噪比變成了\(\frac{\alpha^2\varepsilon_{b}}{N_0}\) ,所以此時的 BPSK 誤碼率可以表示成:

\[P_{e,\alpha}=\mathrm{Q}\left(\sqrt{\alpha^2\frac{2 \varepsilon_{b}}{N_{0}}}\right) \tag{3} \]

由於 \(\alpha\) 是個隨機變量,所以應該對 \(\alpha\) 進行積分運算求誤碼率:

\[P_{e, B P S K}=\int_{0}^{\infty} P_{e,\alpha}\cdot\underbrace{\frac{\alpha}{\sigma^{2}} e^{-\frac{\alpha^{2}}{2 \sigma^{2}}}}_{\text {Rayleigh }} d \alpha \tag{4} \]

最終得到BPSK在瑞利信道下的理論誤碼率公式為:

\[P_{e,BPSK}=\frac{1}{2}\left(1-\sqrt{\frac{\bar{\gamma}_{b}}{1+\bar{\gamma}_{b}}}\right) \tag{5} \]

其中 \(\bar{\gamma}_{b}\) 是平均信噪比,即:

\[\bar{\gamma}_{b}=\frac{\varepsilon_{b}}{N_{0}} E\left(\alpha^{2}\right) \tag{6} \]

對於BPSK誤碼率和誤比特率是一樣的

2 實驗仿真

仿真結果如下圖所示:

  1. 瑞利衰落信道即服從復高斯分布,實部和虛部是均值為0、方差為\(\sigma^2\)的獨立同分布高斯隨機變量。注意這里的方差和后面計算平均信噪比的 \(E\left(\alpha^{2}\right)\) 有關:\(E\left(\alpha^{2}\right)=2\sigma^2\)。仿真的時候要前后對應上。
  2. 未估計出信道指的是對經過瑞利信道的信號直接進行接收判決,這時候基本上誤碼率在50%,和瞎猜一樣。

3 仿真代碼

%% 初始化參數
clc
clear
close all;
M = 2;
nsymbol = 100000;                       %原始數據長度
SNR_dB = 0:35;                          %信噪比dB形式
data_source = round(rand(1,nsymbol));   %生成二進制隨機序列 
%% 坐標點映射
data_send = (data_source - 1/2)*2;      
%%
Eb = norm(data_send).^2/nsymbol;        %每比特能量
snr = 10.^(SNR_dB/10); 
N0 = Eb./snr; 
sigma=sqrt(N0/2);
sigma_rayleigh = 1; %復高斯分布的方差,實部和虛部方差分別除以2
h=(normrnd(0,sqrt(sigma_rayleigh),...
    [1 nsymbol])+i*normrnd(0,sqrt(sigma_rayleigh),[1 nsymbol]))/sqrt(2);
r = abs(h); %取幅度值

for Eb_N0 = 1:length(SNR_dB)
     n=sigma(Eb_N0)*randn(1,nsymbol) + 1j*sigma(Eb_N0)*randn(1,nsymbol); 
     receive=data_send.*h+n;    %加噪聲
     m1 = find(real(receive) > 0);
     m2 = find(real(receive) <= 0);
     redata(m1) = 1;
     redata(m2) = 0;
     % =====================
     % 假設已經估計出了信道相位
     % =====================
     receive_estimated = data_send.*r+n;    %「1」估計出相位后只影響幅度
     %receive_estimated = receive./h;       %「2」或者直接用接收信道除上CSI
     m3 = find(real(receive_estimated) > 0);
     m4 = find(real(receive_estimated) <= 0);
     redata_estimated(m3) = 1;
     redata_estimated(m4) = 0;
     [total,~]=symerr(data_source,redata);
     [total_estimated,~]=symerr(data_source,redata_estimated);
     Pe_simu(Eb_N0) = total/nsymbol;                           %未估計出信道的仿真誤碼率
     Pe_simu_estimated(Eb_N0) = total_estimated/nsymbol;       %已估計出信道的仿真誤碼率
     Pe_theory(Eb_N0) = ...
     (1-sqrt(sigma_rayleigh*snr(Eb_N0)/(1+sigma_rayleigh*snr(Eb_N0))))/2; %理論誤碼率
     Pe_theory_Awgn(Eb_N0) = qfunc(sqrt(2*snr(Eb_N0)));        %高斯信道下的理論誤碼率
end

figure(1);
semilogy(SNR_dB,Pe_simu,'-r*',SNR_dB,Pe_simu_estimated,...
'M-X',SNR_dB,Pe_theory,'k-s',SNR_dB,Pe_theory_Awgn,'b-p');     

grid on;                                      
axis([0 35 10^-5 10^0])   
title('BPSK調制信號在Rayleigh信道下的性能')
xlabel('信噪比/dB');                     
ylabel('誤碼率');                                  
legend('BPSK仿真誤碼率(未估計出信道)', 'BPSK仿真誤碼率(已估計出信道)',...
'BPSK理論誤碼率', 'AWGN信道下理論誤碼率');  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM