Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 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