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');