www.gusucode.com > MATLAB——QPSK误码率源码程序 > MATLAB——QPSK误码率源码程序/qpsk/qpsk.m
%% QPSK simulation over Rayleigh Fading wireless channel %% and its comparison with QPSK transmission over Wireline channel close all;clear all;clc; SNRdB=1:1:12; %SNR in dB SNR=10.^(SNRdB/10); %SNR in linear Scale bl=10^6; %No. of bits transmitted ber=zeros(1,length(SNRdB)); %Simulated BER x1=(2*floor(2*rand(1,bl)))-1; x2=(2*floor(2*rand(1,bl)))-1; x=x1+1i*x2; %Transmitted Symbols %% QPSK Transmission over AWGN Wireline channel parfor k=1:length(SNR); y=(sqrt(SNR(k))*x1)+randn(1,bl)+1i*((sqrt(SNR(k))*x2)+randn(1,bl)); ber(k)=length(find((real(y).*x1)<0))+length(find((imag(y).*x2)<0)); end ber=ber/bl; semilogy(SNRdB,ber,'k-<', 'linewidth' ,2.0); %Simulated BER hold on p=qfunc(sqrt(SNR)); semilogy(SNRdB,2*p-p.^2,'m-','linewidth',2.0); %Theoritical BER %% QPSK over Rayleigh Fading Wireless Channel parfor k=1:length(SNR) y=raylrnd(1/sqrt(2),1,bl).*(sqrt(SNR(k))*x1)+randn(1,bl)+1i*(raylrnd(1/sqrt(2),1,bl).*(sqrt(SNR(k))*x2)+randn(1,bl)); ber(k)=length(find((real(y).*x1)<0))+length(find((imag(y).*x2)<0)); end ber=ber/bl; semilogy(SNRdB,ber,'k-<', 'linewidth' ,2.0); %Simulated BER hold on p=0.5*(1-(sqrt(SNR./(2+SNR)))); semilogy(SNRdB,2*p-p.^2,'r-','linewidth',2.0); %Theoritical BER title('QPSK over Wireline & Rayleigh Fading Wireless channel');xlabel('SNR(dB)');ylabel('BER'); axis tight grid