PDPM

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

PDPM-Indian Institute of Information Technology, Design

and Manufacturing Jabalpur-India

Lab record of advance communication


(EC552L)

Submitted to
Dr. Matadeen Bansal

Submitted by
Virendra Patel
1612111
Experiment no. – 1
Aim- Program to plot SNR vs BER graph of Antipodal Signal.
Program-
% Program to plot SNR v/s BER of Antipodal signal

clc;

clear all;

bits=10^5; %define bits

SNR_db=-3:10; %define snr in db

s=rand(1,bits); %define uniform random signal

snr=10.^(SNR_db/10); %change snr decibel into real value

for k=1:length(snr) %genaration of binary bits

e=0; %intialization of error

for i= 1:bits

if s(i)<=0.5

c(i)=0;

else

c(i)=1;

end

a(i)=2.*c(i)-1; %generate antipodal bits -1 and 1

n(i)=(1/sqrt(snr(k)))*(1/sqrt(2))*(randn+1j*randn); %formula for gausian noise

y(i)=real(a(i)+n(i)); %summation of input bit with noise

if y(i)<=0

r(i)=-1; % conversion of random sequence

% into a binary sequence

else

r(i)=1;

end

if a(i)~=r(i) %comparison of input bits with signal bits

e=e+1; %updating error bit


end

end

Ber(k)=e/bits; %apply formula for bit error rate

end

close all;

ther=qfunc(sqrt(2.*snr)); %code to plot graph with color

semilogy(SNR_db,ther,'g*-');

hold on;

semilogy(SNR_db,Ber,'b*-');

grid on;

title('Ber vrs SNR_db');

xlabel('SNR_db'); % x axix plot for SNR

ylabel('Ber'); % y axix plot for bits error rate

legend('t','p');
RESULT
Experiment no. – 2

Aim- Program to plot SNR vs BER graph of ON-OFF Signal.


Program-
clc;

clear all;

bits=10^5; %define bits

SNR_db=-3:10; %define snr in db

s=rand(1,bits); %define uniform random signal

snr=10.^(SNR_db/10); %change snr decibel into real value

for k=1:length(snr) %genaration of binary bits

e=0; %intialization of error

for i= 1:bits

if s(i)<=0.5

c(i)=0;

else

c(i)=1;

end

n(i)=(1/sqrt(snr(k)))*(1/sqrt(2))*(randn+1j*randn); %formula for gausian noise

y(i)=real(c(i)+n(i)); %summation of input bit with noise

if y(i)<=0.5

r(i)=0;

else

r(i)=1;

end

if c(i)~=r(i) %comparison of input bits with signal bits

e=e+1; %updating error bit

end

end

Ber(k)=e/bits; %apply formula for bit error rate

end
close all;

ther=qfunc(sqrt(snr/2)); %code to plot graph with color

semilogy(SNR_db,ther,'g*-');

hold on;

semilogy(SNR_db,Ber,'b*-');

grid on;

title('Ber vrs SNR_db');

xlabel('SNR_db'); % x axix plot for SNR

ylabel('Ber'); % y axix plot for bits error rate

legend('t','p');
RESULT
Experiment no. – 3
Aim- Program to plot SNR vs BER graph of orthogonal Signal.
Program-
clc;

clear all;

bits=10^5; % number of signal bits

SNR_db=-3:10; % SNR in dB

snr=10.^(SNR_db/10); % SNR in real value

for k=1:length(snr)

e=0;

s=rand(1,bits);

for i=1:bits; %assigning signal bits

if s(i)<=0.5 %conversion of random sequence

c(i)=0; % into a binary sequence

else

c(i)=1;

end

if c(i)==0

s1=[0 1]; %encoding logic

else

s1=[1 0];

end

n=(1/sqrt(snr(k))).*(1/sqrt(2)).*(randn(1,2)+1j*randn(1,2)); %assigning noise signal

y=real(s1+n); % received signal

if y(1,1)>=y(1,2)

r=[1 0]; % decoding logic

else

r=[0 1];
end

if s1~=r % error calculation

e=e+1;

end

end

Ber(k)=e/bits;

end

close all;

ther=qfunc(sqrt(snr)); % theoretical formula for bit error rate

semilogy(SNR_db,ther,'g*-'); % plotting commands

hold on;

semilogy(SNR_db,Ber,'b*-');

grid on;

title('Ber vrs SNR_db');

xlabel('SNR_db');

ylabel('Ber');

legend('t','p');
RESULT
Experiment no. – 4
Aim- Program to plot SNR vs BER graph M-ARY Signal.
Program-
clc;

clear all;

r=10^4; %no. of bits

snr=-3:10; % SNR in dB

snra=10.^(snr/10); % real(snr)

for l=1:length(snra) % assigning signal bits

y=rand(1,r); %generation of random signal

e=0;

for i=1:r %generation of binary bits

if y(i)<=0.25

s2(i)=-3;

elseif y(i)<=0.5

s2(i)=-1;

elseif y(i)<=0.75

s2(i)=1;

else s2(i)=3;

end

end

n=0.707*(randn(1,r)+1j*randn(1,r)); % assigning noise signal

n0=(sqrt(2.5./snra(l)));

ni=n0.*n;

x=real(s2+ni); %recieved signal

for i=1:r % decoding logic

if x(i)<=-2

p(i)=-3;

elseif x(i)<=0

p(i)=-1;
elseif x(i)<=2

p(i)=1;

else p(i)=3; %decoded signal

end

end

for i=1:r

if p(i)~=s2(i);

e=e+1; % error calculation

end

end

Ber(l)=e/r; %error per bit

end

PM=(1.5*qfunc(sqrt(4.*snra/5)));

semilogy(snr,PM,'gs-'); % plotting command

xlabel('theor BER');

ylabel('SNR(dB)');

hold on;

semilogy(snr,Ber,'r*-');

xlabel('BER');

ylabel('SNR(dB)');

legend('theor ber','practical ber');

title('SNR vs BER');
RESULT
Experiment no. – 5
Aim- Program to plot SNR vs BER graph M-ARY orthogonal
Signal.
Program-
clc;

clear all;

r=10^4; %no. of bits

snr=-3:10; % SNR in dB

snra=10.^(snr/10); % real(snr)

for l=1:length(snra) % assigning signal bits

y=rand(1,r);

e=0;

for i=1:r %generation of binary bits

if y(i)<=0.25 % decoding logic

s(i)=1;

elseif y(i)<=0.5

s(i)=2;

elseif y(i)<=0.75

s(i)=3;

else

s(i)=4;

end

if s(i)==1

b=[1 0 0 0];

elseif s(i)==2

b=[0 1 0 0];

elseif s(i)==3

b=[0 0 1 0];

else
b=[0 0 0 1];

end

n=0.707.*(randn(1,4)+1j.*randn(1,4)); % assigning noise signal

n0=(sqrt(1/(2*snra(l))));

ni=n0.*n;

p=real(b+ni); %recieved signal

if (p(1,1)>p(1,2))&&(p(1,1)>p(1,3))&&(p(1,1)>p(1,4))

m=[1 0 0 0];

elseif (p(1,2)>p(1,1))&&(p(1,2)>p(1,3))&&(p(1,2)>p(1,4))

m=[0 1 0 0];

elseif (p(1,3)>p(1,1))&&(p(1,3)>p(1,2))&&(p(1,3)>p(1,4))

m=[0 0 1 0];

else

m=[0 0 0 1];

end %decoded signal

if (b(1,1)==m(1,1))&&b(1,2)==m(1,2)&&b(1,3)==m(1,3)&&b(1,4)==m(1,4)

e=e;

else e=e+1; % error calculation

end

end

Ber(l)=e/r; %error per bit

end

PM=3*qfunc(sqrt(2.*snra));

semilogy(snr,PM,'g-'); % plotting command

xlabel('theor BER');

ylabel('SNR(dB)');

hold on;

semilogy(snr,Ber,'r*-');

xlabel('BER');

ylabel('SNR(dB)');

legend('theor ber','practical ber');

title('SNR vs BER');
grid on

RESULT
Experiment no. – 6
Aim- Program to find error in duobinary signal
Program-
clc;

clear all;

d=[1 0 1 1 0 0]; % Assign the random vector

p(1)=0;

e=0;

for i=1:length(d)

p(i+1)=xor(p(i),d(i)); % coding logic

end

a=2.*p-1;

for i=1:6

b(i)=a(i)+a(i+1);

end

c=mod(((b./2)+1),2)

if d(i)~=c(i); % error calclucation

e=e+1;

end
RESULT
Experiment no. – 7
Aim- - Program to plot SNR vs BER graph M-ARY PAM Signal.
Program-
clc;

clear;

SNRdB=-3:10; % SNR in dB

SNR= 10.^(SNRdB/10); % SNR in real value

bits=10000; % number of signal bits

ber=zeros(1,length(SNR));

M=16;

for p= 1:length(SNR)

error=0;

for k=1:bits

s=rand; % assigning signal bits

if s<=0.0625

s1= -15;

elseif s<=0.125

s1=-13; % conversion of random sequence

elseif s<=0.1875 % into a binary sequence

s1= -11;

elseif s<=0.25

s1= -9;

elseif s<=0.3125

s1= -7;

elseif s<=0.375

s1= -5;

elseif s<=0.4375

s1= -3;

elseif s<=0.5
s1= -1;

elseif s<=0.5625

s1= 1;

elseif s<=0.625

s1= 3;

elseif s<=0.6875

s1= 5;

elseif s<=0.75

s1= 7;

elseif s<=0.8125

s1= 9;

elseif s<=0.875

s1= 11;

elseif s<=0.9375

s1= 13;

else s1= 15;

end

n=randn+1j.*randn; % assigning noise signal

na=.707.*n;

ni= sqrt((M^2-1)/(3*log2(M))/SNR(p)).*na;

y= s1+ni ;

yf= real(y); % received signal

if yf<=-14

r= -15;

elseif yf<=-12

r=-13; % conversion of random sequence

elseif yf<=-10 % into a binary sequence

r= -11;

elseif yf<=-8

r= -9;

elseif yf<=-6

r= -7;
elseif yf<=-4

r= -5;

elseif yf<=-2

r= -3;

elseif yf<=0

r= -1;

elseif yf<=2

r= 1;

elseif yf<=4

r= 3;

elseif yf<=6

r= 5;

elseif yf<=8

r= 7;

elseif yf<=10

r= 9;

elseif yf<=12

r= 11;

elseif yf<=14

r= 13;

else r= 15;

end %decoded signal

if r~=s1

error=error+1; % error calculation

end

end

ber(p)= error/bits; % error per bit conversion

end

PE= 2*((M-1)/M)*qfunc(sqrt((6*log2(M)).*SNR./(M^2-1)));

%PE= (15/8)*qfunc(sqrt(24.*SNR/255));

figure

semilogy(SNRdB,ber,'r*-'); % plotting command


hold on;

axis tight;

semilogy(SNRdB,PE,'-b');

grid on;

legend('SIMULATION','THEORY');

xlabel('\fontsize{15}SNR(dB)');

ylabel('\fontsize{15}BIT ERROR RATE');

title('\fontsize{20}VARIATION OF BER WITH SNR FOR 16-ARY SIGNALLING');

%END OF PROGRAM
RESULT

You might also like