You are on page 1of 38

Simulating Communication Systems

with MATLAB : An Introduction


Aniruddha Chandra
ECE Department, NIT Durgapur, WB, India.
aniruddha.chandra@ieee.org

September 23, 2010

NIT DGP Student


Branch

Presentation Outline

Sep. 23, 2010

Objective of the Lecture


Expected Background
Simulating Analog Communication Systems
Amplitude Modulation (AM)
Simulating Digital Communication Systems
Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Presentation Outline

Sep. 23, 2010

Objective of the Lecture


Expected Background
Simulating Analog Communication Systems
Amplitude Modulation (AM)
Simulating Digital Communication Systems
Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Objective of the Lecture

Sep. 23, 2010

After the Lecture Youll be able to

Write your own Matlab Script


Make a Analog/ Digital Communication Link
Compare your Results with Theoretical Values

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Presentation Outline

Sep. 23, 2010

Objective of the Lecture


Expected Background
Simulating Analog Communication Systems
Amplitude Modulation (AM)
Simulating Digital Communication Systems
Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Expected Background

Sep. 23, 2010

I assume that You understand

Basic MATLAB Operations (function, matrix)


Basics of Communication (modulation)
Performance Metrics (BER)

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Presentation Outline

Sep. 23, 2010

Objective of the Lecture


Expected Background
Simulating Analog Communication Systems
Amplitude Modulation (AM)
Simulating Digital Communication Systems
Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Analog Communication Systems

Source

Sep. 23, 2010

Modulator
Channel

Destination

A. Chandra, ECE Deptt., NITD

Demodulator

Simulating Communication Systems with MATLAB

Simulate a Source

Source

Sep. 23, 2010

Modulator
Channel

Destination

Demodulator

Produces message signal e.g. a simple Sine wave

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Simulate a Source

Sep. 23, 2010

Generate message signal (simple sine wave)


m t Vm sin 2f mt
Define time instants (1000 sample points)
tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;

Define amplitude and frequency (initial phase is zero)


Vm = 1;
fm = 2*10^3;

% Amplitude
% Frequency

Construct the Signal


m = Vm*sin(2*pi*fm*t);

View the Signal


plot(t,m,'r');

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

10

Simulate a Source
Complete MATLAB Script

Sep. 23, 2010

[Prog1.m]

tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;


t = tmin:step:tmax;
fm = 2*10^3;
Vm = 1;
m = Vm*sin(2*pi*fm*t);
plot(t,m,'r');

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

11

Simulate a Source

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

12

Simulate a Source
Assignment #1

Sep. 23, 2010

[Prog2.m], [Prog3.m]

What happens if there is an initial phase?


phi_deg = 45;
phi_rad = phi_deg*pi/180;
m = Vm*sin(2*pi*fm*t+phi_rad);

What happens if the message is not sinusoidal?


tmin = 0; tmax = 1; step = (tmax-tmin)/1000;
t = tmin:step:tmax;
f = 2;
m = sawtooth(2*pi*f*t);
plot(t,m,'r');

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

13

Simulate Modulation

Source

Sep. 23, 2010

Modulator
Channel

Destination

Demodulator

Built-in functions are available (ammod, amdemod etc.)


WYSIWYG?? No

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

14

Amplitude Modulation
Simulate with built-in functions
fs = 8000;
fc = 300;
t = [0:0.1*fs]'/fs;
m = sin(20*pi*t);
v = ammod(m,fc,fs);

%
%
%
%
%

[Prog4.m]

Sampling rate is 8000 samples per second


Carrier frequency in Hz
Sampling times for 0.1 second
Representation of the signal
Modulate m to produce v

figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,v);
mr = amdemod(v,fc,fs);

Sep. 23, 2010

% Plot m on top
% Plot v below

% Demodulate v to produce m

figure(2);
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr);

% Plot m on top
% Plot mr below

Source: Introduction to Communications Toolbox in MATLAB 7.6.0 (R2008) by Amit Degada


Available: http://amitdegada.weebly.com/download.html

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

15

Amplitude Modulation

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

16

Amplitude Modulation

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

17

Amplitude Modulation

Sep. 23, 2010

Dont have the feel??? . Try this


Define message signal, m t Vm sin 2f m t (as done earlier)
tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;
Vm = 1;
fm = 2*10^3;
m = Vm*sin(2*pi*fm*t);

Define carrier, c t Vc sin 2f c t


Vc = 2;
% Amplitude
fc = 10^4;
% Frequency
c = Vc*sin(2*pi*fc*t); % Carrier signal

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

18

Amplitude Modulation

Sep. 23, 2010

Continued .

Modulate the Signal, v t Vc 1

v = (1+m/Vc).*c;

Vm
sin 2f mt sin 2f ct
Vc

% DSB-FC modulation

View Modulated Wave


plot(t,v);
% Modulated Wave
hold on;
plot(t,Vc*(1+m/Vc),'r:'); % Upper Envelope
hold on;
plot(t,-Vc*(1+m/Vc),'r:'); % Lower Envelope
hold off ;

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

19

Amplitude Modulation
Complete MATLAB Script

Sep. 23, 2010

[Prog5.m]

clear all; close all; clc;


tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;
% Time
Vm = 1; Vc = 2;
% Amplitude
fm = 2*10^3; fc = 10^4; % Frequency
m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = (1+m/Vc).*c;

% Message
% Carrier
% Modulated Wave

plot(t,v); hold on;


plot(t,Vc*(1+m/Vc),'r:'); hold on; % Upper Envelope
plot(t,-Vc*(1+m/Vc),'r:'); hold off % Lower Envelope

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

20

Amplitude Modulation

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

21

Amplitude Modulation
Assignment #2

Sep. 23, 2010

[Prog6.m]

How to view effect of changing modulation index?


tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;
Vm = 1; mu = 1.5; Vc = Vm/mu;
fm = 2*10^3; fc = 10^4;
m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = (1+m/Vc).*c;
plot(t,v); hold on;
plot(t,Vc*(1+m/Vc),'r:'); hold on;
plot(t,-Vc*(1+m/Vc),'r:'); hold off

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

22

Amplitude Modulation
Assignment #2 (Contd)

Sep. 23, 2010

[Prog7.m]

How to simulate DSB-SC modulation?


tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;
Vm = 2; Vc = 1;
fm = 2*10^3; fc = 10^4;
m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = m.*c;
plot(t,v); hold on;
plot(t,m,'r:'); hold on;
plot(t,-m,'r:'); hold off

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

23

Demodulation
Demodulate DSB-SC with filter

Sep. 23, 2010

[Prog8.m]

clear all; close all; clc;


tmin = 0; tmax = 1; step = (tmax-tmin)/(10^3);
t = tmin:step:tmax;
Vm = 2; Vc = 1;
fm = 2; fc = 10^2;
m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = m.*c;
r = v.*c;
[b a] = butter(1,0.01);
mr = filter(b,a,r);
figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr);

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

24

Demodulation

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

25

Demodulation
Ideal Demodulation of DSB-SC

Sep. 23, 2010

[Prog9.m]

clear all; close all; clc;


fs = 10^5; N = 10^5;
t = 1/fs:1/fs:N/fs;
fm = 2; fc = 10^3;
m = sin(2*pi*fm*t);
c = sin(2*pi*fc*t);
v = m.*c;
r = zeros(1,N); n =f s/fc;
for k = 1:fc
mr((k-1)*n+1:k*n) = 2*v((k-1)*n+1:k*n)*c((k-1)*n+1:k*n)'/n;
end
figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr);

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

26

Demodulation

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

27

Analog Communication Systems

Source

Sep. 23, 2010

Modulator
Channel

Destination

Demodulator

Introduces noise Additive White Gaussian Noise

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

28

Simulate Channel
Introducing AWGN

Sep. 23, 2010

[Prog10.m]

fs = 10^5; N = 10^5;
t = 1/fs:1/fs:N/fs;
fm = 2; fc = 10^3;
m = sin(2*pi*fm*t);
c = sin(2*pi*fc*t);
v = m.*c;
SNRdB = 10; SNR = 10^(SNRdB/10);
vn = var(v)/SNR;
n = sqrt(vn)*randn(1,N);
v = v + n;
r=zeros(1,N); n=fs/fc;
for k=1:fc
mr((k-1)*n+1:k*n)=2*v((k-1)*n+1:k*n)*c((k-1)*n+1:k*n)'/n;
end
figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr); axis([0 1 -1 1])
A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

29

Simulate Channel

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

30

Presentation Outline

Sep. 23, 2010

Objective of the Lecture


Expected Background
Simulating Analog Communication Systems
Amplitude Modulation (AM)
Simulating Digital Communication Systems
Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

31

Digital Communication Systems

Source

Sep. 23, 2010

Modulator
Channel

Destination

A. Chandra, ECE Deptt., NITD

Demodulator

Simulating Communication Systems with MATLAB

32

Simulate BPSK
Simulation
%This program simulates BER
clear all; close all; clc;
num_bit=100000;
max_run=20;
Eb=1;
SNRdB=0:1:9;
SNR=10.^(SNRdB/10);

Sep. 23, 2010

[Prog11.m]
of BPSK in AWGN channel%
%Signal length
%Maximum number of iterations for a single SNR
%Bit energy
%Signal to Noise Ratio (in dB)

hand=waitbar(0,'Please Wait....');
for count=1:length(SNR)
%Beginning of loop for different SNR
avgError=0;
No=Eb/SNR(count);
%Calculate noise power from SNR

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

33

Simulate BPSK
Simulation (Contd.)

Sep. 23, 2010

[Prog11.m]

for run_time=1:max_run %Beginning of loop for different runs


waitbar((((count-1)*max_run)+run_time-1)/(length(SNRdB)*max_run));
Error=0;
data=randint(1,num_bit);
s=2*data-1;

%Generate binary data source


%Baseband BPSK modulation

N=sqrt(No/2)*randn(1,num_bit);

%Generate AWGN

Y=s+N;

%Received Signal

for k=1:num_bit %Decision device taking hard decision and deciding error
if ((Y(k)>0 && data(k)==0)||(Y(k)<0 && data(k)==1))
Error=Error+1;
end
end
Error=Error/num_bit;
avgError=avgError+Error;
end
A. Chandra, ECE Deptt., NITD

%Calculate error/bit
%Calculate error/bit for different runs
%Termination of loop for different runs
Simulating Communication Systems with MATLAB

34

Simulate BPSK
Simulation (Contd.)

[Prog11.m]

BER_sim(count)=avgError/max_run;
end
BER_th=(1/2)*erfc(sqrt(SNR));
close(hand);

Sep. 23, 2010

%Calculate BER for a particular SNR


%Termination of loop for different SNR
%Calculate analytical BER

semilogy(SNRdB,BER_th,'k');
%Plot BER
hold on
semilogy(SNRdB,BER_sim,'k*');
legend('Theoretical','Simulation',3);
axis([min(SNRdB) max(SNRdB) 10^(-5) 1]);
hold off

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

35

Simulate BPSK

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

Sep. 23, 2010

36

References

Sep. 23, 2010

[1] http://www.mathworks.com/matlabcentral/
[2] http://www.freewebs.com/acwebpage/teaching.htm
[3] B.P. Lathi and Z. Ding, Modern Digital and Analog
Communication Systems, Oxford University Press,
International 4th edition, 2010.
[4] J.G. Proakis, M. Salehi, and G. Bauch, Contemporary
Communication Systems using MATLAB, Thomson/ CLEngineering, 2nd edition, 2003.

A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

37

Sep. 23, 2010

Thank You!
Questions???
aniruddha.chandra@ieee.org
A. Chandra, ECE Deptt., NITD

Simulating Communication Systems with MATLAB

38

You might also like