You are on page 1of 2

clc

clear all;
N=10^6;
TX_DATA=round(rand(1,N));
EB_NO=[1:10];
mapping=(2*TX_DATA-1)+j*(2*TX_DATA-1);
NO_OF_COEFF=80;
Beta=0.2;
T=4; a=-NO_OF_COEFF:0.25:NO_OF_COEFF; b=(2*NO_OF_COEFF*T)+1;
for j=1:length(a) if a(j)==0
h(j)=1-Beta*(1-(4/pi));
elseif a(j)==-1/(4*Beta)
h(j)=(Beta*cos((pi/4)*(1-(1/Beta))))-(2*(Beta/pi)*cos((pi/4)*(1+(1/Beta))));
elseif a(j)==1/(4*Beta)
h(j)=(Beta*cos((pi/4)*(1-(1/Beta))))-(2*(Beta/pi)*cos((pi/4)*(1+(1/Beta))));
else h(j)=(sin((pi*a(j))*(1Beta))+(4*Beta*a(j)*cos(pi*a(j)*(1+Beta))))/(pi*a(j)*(1(16*Beta*Beta*a(j)*a(j))));
end
end
EB=[];
for l=1:length(a) EB= EB+(h(l))^2;
end
for i=1:length(EB_NO)
up_sampling_again=upsample(mapping,4);
pulse_shaping=conv(up_sampling_again,h); noise=10.^(-EB_NO/10);
n=(sqrt(noise(i)/2*EB))*(randn(1,length(pulse_shaping))+(sqrt(1))*(randn(1,length(pulse_shaping))));
TX_SIGNAL=pulse_shaping+n; matched_filter=conv(TX_SIGNAL,h);
dn_sample=matched_filter(b:4:length(matched_filter)-b);
RX_DATA_real=real(dn_sample)>0;
RX_DATA_Imag=imag(dn_sample)>0;
map_re=(real(mapping)+1)/2;
map_imag=(imag(mapping)+1)/2;
z=(xor(RX_DATA_real,map_re)); z1=(xor(RX_DATA_Imag,map_imag));
BER(i)=[sum(z)+sum(z1)]/N;

end
THEORY_BER=erfc(sqrt(10.^(EB_NO/10)));
close all;
semilogy(EB_NO,BER,'-b*',EB_NO,THEORY_BER,'-r.');
grid on
title('BER of QPSK with SQRC pulse shaping');
legend( 'SIMULATION CURVE','THEORY CURVE');
xlabel('EB/NO');
ylabel('BER');

You might also like