www.gusucode.com > QPSK瑞利信道误码率分析源码程序 > QPSK瑞利信道误码率分析源码程序/QPSK_System_BER_Simulation.m

    % QPSK System Simulation, Pe evaluation
echo on
SNRindB1=0:0.5:6;                          %仿真信噪比范围
SNRindB2=0:0.1:6;                           %理论计算信噪比范围

for i=1:length(SNRindB1),                  
    [pb,ps]=cm_sm32(SNRindB1(i));               % simulated bit and symbol error rates
    smld_bit_err_prb(i)=pb;
    smld_symbol_err_prb(i)=ps;
    disp([ps,pb]);
     echo off;
 end;
echo on 
for i=1:length(SNRindB1),
[pb_rayleigh,ps_rayleigh]=rayleigh(SNRindB1(i));               % simulated bit and symbol error rates
    smld_bit_err_prb_rayleigh(i)=pb_rayleigh;
    smld_symbol_err_prb_rayleigh(i)=ps_rayleigh;
    disp([ps_rayleigh,pb_rayleigh]);
         echo off;
 end;
echo on;
for i=1:length(SNRindB2),
    SNR=exp(SNRindB2(i)*log(10)/10);            % signal to noise ratio
    theo_err_prb(i)=0.5*erfc(sqrt(SNR));        % theoretical bit error rate
    x=1-sqrt(SNR./(1+SNR));
    theo_err_prb_rayleigh(i)=x/2;        % theoretical bit error rate_rayleigh
    echo off;
end;
echo on;
% Plotting commands follow % 作图
grid on
semilogy(SNRindB1,smld_bit_err_prb,'*');
hold on
semilogy(SNRindB1,smld_symbol_err_prb,'o');
hold on
semilogy(SNRindB2,theo_err_prb);
hold on
semilogy(SNRindB2,theo_err_prb_rayleigh,'r');
hold on
semilogy(SNRindB1,smld_bit_err_prb_rayleigh,'r*');
hold on
semilogy(SNRindB1,smld_symbol_err_prb_rayleigh,'ro');

xlabel('信噪比(dB)');
ylabel('误码/符号率');
legend('bit error probability','symbol error probability','theory error probability');
title('BER performance of QPSK transmission scheme under AWGN and Rayleigh fading channel');