0% found this document useful (0 votes)
21 views3 pages

7 Many

This document simulates digital communication over an additive white Gaussian noise (AWGN) channel. It generates random binary data, maps it to QPSK symbols, transmits the symbols over an AWGN channel at various signal-to-noise ratio (SNR) levels, detects the received symbols, and calculates the bit error rate (BER) for each SNR value. The BER results for binary phase-shift keying (BPSK) and QPSK modulation are then plotted on a graph.

Uploaded by

mohamed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views3 pages

7 Many

This document simulates digital communication over an additive white Gaussian noise (AWGN) channel. It generates random binary data, maps it to QPSK symbols, transmits the symbols over an AWGN channel at various signal-to-noise ratio (SNR) levels, detects the received symbols, and calculates the bit error rate (BER) for each SNR value. The BER results for binary phase-shift keying (BPSK) and QPSK modulation are then plotted on a graph.

Uploaded by

mohamed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

clc;

close all;
clear all;
dB= -2:1:5;
bits=randi([0 1],1,100000);
Bits=2*bits-1;
TX_Bits=zeros(8,100000);
No= power(10,-dB/10);
for i=1:1:8
CH=randn(1,100000)*sqrt(1/2)+1j*randn(1,100000)*sqrt(1/2);
noise=(sqrt(No(i)/2).*randn(1,length(Bits)))
+(1i*sqrt(No(i)/2).*randn(1,length(bits)));
TX_Bits(i,1:100000)=Bits.*CH+noise;
TX_Bits(i,1:100000)=TX_Bits(i,1:100000).*conj(CH)./(abs(CH).^2);
end
for n=1:1:8
k=1;
for i=1:length(TX_Bits)
if(TX_Bits(n,i) > 0)
RX_Bits(n,k)=[1];
elseif(TX_Bits(n,i) < 0)
RX_Bits(n,k)=[0];
end
k=k+1;
end
end
for i=1:8
[X(i),BER(i)]=symerr(bits,RX_Bits(i,:));
end
figure
semilogy(dB,BER,'b');
hold on
Bits=randi([0 1],1,100000);
TX=zeros(1,25000);
k=1;
for i=1:4:length(Bits)
if(Bits(i)==1 && Bits(i+1)==0 && Bits(i+2)==1 && Bits(i+3)==0)
TX(k)=[3+3i];
elseif(Bits(i)==1 && Bits(i+1)==0 && Bits(i+2)==0 &&
Bits(i+3)==0) TX(k)=[3-3i];
elseif(Bits(i)==1 && Bits(i+1)==1 && Bits(i+2)==0 &&
Bits(i+3)==0)TX(k)=[1-3i];
elseif(Bits(i)==1 && Bits(i+1)==1 && Bits(i+2)==0 &&
Bits(i+3)==1)TX(k)=[1-1i];
elseif(Bits(i)==1 && Bits(i+1)==1 && Bits(i+2)==1 &&
Bits(i+3)==0) TX(k)=[1+3i];
elseif(Bits(i)==0 && Bits(i+1)==1 && Bits(i+2)==1 &&
Bits(i+3)==0)TX(k)=[-1+3i];
elseif(Bits(i)==0 && Bits(i+1)==1 && Bits(i+2)==1 &&
Bits(i+3)==1) TX(k)=[-1+1i];
elseif(Bits(i)==0 && Bits(i+1)==0 && Bits(i+2)==1 &&
Bits(i+3)==1)TX(k)=[-3+1i];
elseif(Bits(i)==1 && Bits(i+1)==1 && Bits(i+2)==1 &&
Bits(i+3)==1)TX(k)=[1+1i];

elseif(Bits(i)==0 && Bits(i+1)==0 && Bits(i+2)==1 &&


Bits(i+3)==0)TX(k)=[-3+3i];
elseif(Bits(i)==0 && Bits(i+1)==1 && Bits(i+2)==0 &&
Bits(i+3)==0)TX(k)=[-1-3i];
elseif(Bits(i)==0 && Bits(i+1)==0 && Bits(i+2)==0 &&
Bits(i+3)==1)TX(k)=[-3-1i];
elseif(Bits(i)==0 && Bits(i+1)==1 && Bits(i+2)==0 &&
Bits(i+3)==1)TX(k)=[-1-1i];
elseif(Bits(i)==0 && Bits(i+1)==0 && Bits(i+2)==0 &&
Bits(i+3)==0)TX(k)=[-3-3i];
elseif(Bits(i)==1 && Bits(i+1)==0 && Bits(i+2)==0 &&
Bits(i+3)==1)TX(k)=[3-1i];
elseif(Bits(i)==1 && Bits(i+1)==0 && Bits(i+2)==1 &&
Bits(i+3)==1)TX(k)=[3+1i];
end
k=k+1;
end
dB= -2:1:5;
No= power(10,-dB/10);
No=No*2.5;
for i=1:1:8
CH=randn(1,25000)*sqrt(1/2)+1j*randn(1,25000)*sqrt(1/2);
noise=sqrt(No(i)/2).*randn(1,25000)+(1i*sqrt(No(i)/2).*randn(1,25000));
RX(i,:)=TX.*CH+noise;
RX(i,:)=RX(i,:).*conj(CH)./(abs(CH).^2);
end
for n=1:1:8
k=1;
for i=1:1:length(RX)
if(real(RX(n,i))>=0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >= 0
&& abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 0 &&
abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[1 1 0 1];
elseif(real(RX(n,i))>=0 && imag(RX(n,i))>=0 && abs(real(RX(n,i)))
>= 2 && abs(imag(RX(n,i))) > 0 && abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[1 0 1 1];
elseif(real(RX(n,i))>=0 && imag(RX(n,i))>=0 &&
abs(real(RX(n,i))) >= 0 && abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i)))
>= 0 && abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[1 1 1 1];
elseif(real(RX(n,i))>=0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >=
0 && abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[1 1 0 0];
elseif(real(RX(n,i))>=0 && imag(RX(n,i))<0 &&
abs(real(RX(n,i))) >= 2 && abs(imag(RX(n,i))) > 0 && abs(imag(RX(n,i)))
< 2 )
RX_Sig(n,k:k+3)=[1 0 0 1];
elseif(real(RX(n,i))>=0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >=
2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[1 0 0 0];
elseif(real(RX(n,i))<0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >=
2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[0 0 0 0];

elseif(real(RX(n,i))>=0 && imag(RX(n,i))>=0 && abs(real(RX(n,i)))


>= 0 && abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[1 1 1 0];
elseif(real(RX(n,i))<0 && imag(RX(n,i))>=0 && abs(real(RX(n,i))) >=
0 && abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 0 &&
abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[0 1 1 1];
elseif(real(RX(n,i))>=0 && imag(RX(n,i))>=0 &&
abs(real(RX(n,i))) >= 2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[1 0 1 0];
elseif(real(RX(n,i))<0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >=
0 && abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 0 &&
abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[0 1 0 1];
elseif(real(RX(n,i))<0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >= 0
&& abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[0 1 0 0];
elseif(real(RX(n,i))<0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >=
2 && abs(imag(RX(n,i))) > 0 && abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[0 0 0 1];
elseif(real(RX(n,i))<0 && imag(RX(n,i))>=0 &&
abs(real(RX(n,i))) >= 2 && abs(imag(RX(n,i))) > 0 && abs(imag(RX(n,i)))
< 2 )
RX_Sig(n,k:k+3)=[0 0 1 1];
elseif(real(RX(n,i))<0 && imag(RX(n,i))>=0 && abs(real(RX(n,i))) >=
0 && abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[0 1 1 0];
elseif(real(RX(n,i))<0 && imag(RX(n,i))<0 && abs(real(RX(n,i))) >= 0
&& abs(real(RX(n,i))) < 2 && abs(imag(RX(n,i))) >= 0 &&
abs(imag(RX(n,i))) < 2 )
RX_Sig(n,k:k+3)=[0 1 0 1];
elseif(real(RX(n,i))<0 && imag(RX(n,i))>=0 && abs(real(RX(n,i))) >=
2 && abs(imag(RX(n,i))) >= 2 )
RX_Sig(n,k:k+3)=[0 0 1 0];
end
k=k+4;
end
end
for i=1:8
[X(i),BER(i)]=symerr(Bits,RX_Sig(i,:));
end
semilogy(dB,BER,'m');

You might also like