Matlab code
SNR=10.^(SNRdB/10);
totalError=0;
totalError1=0;
Error=0;
Error1=0;
s=2*data-1;
data1=reshape(data,num_bit/2,2);
data1=2*data1-1;
s1 = (data1(:,1) + j*data1(:,2))/sqrt(2);
Y1=s1+N1;
Y=real(Y);
for k=1:num_bit
Error=Error+1;
end
end
for k=1:num_bit/2
Error1=Error1+1;
end
end
Error1=2*Error1/num_bit;
totalError1=totalError1+Error1;
avgError1=totalError1/max_run;
BER_sim1(count)=avgError1;
BER_th1=.5*erfc(sqrt(SNR/2));
semilogy(SNRdB,BER_th1,'g',SNRdB,BER_sim1,'g*',SNRdB,BER_th,'k',SNRdB,BER_sim,'k*');
legend('Theoretical','Simulation',3);