Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Simulating communication systems with MATLAB: An introduction
1. 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
2. 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 2
3. 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 3
4. Objective of the Lecture Sep. 23, 2010
After the Lecture … You’ll 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 4
5. 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 5
6. 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 6
7. 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 7
8. Analog Communication Systems Sep. 23, 2010
Source Modulator
Channel
Destination Demodulator
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 8
9. Simulate a Source Sep. 23, 2010
Source Modulator
Channel
Destination Demodulator
Produces message signal … e.g. a simple Sine wave
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 9
10. Simulate a Source Sep. 23, 2010
Generate message signal (simple sine wave)
m( t ) = Vm sin ( 2πf 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; % Amplitude
fm = 2*10^3; % 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
11. Simulate a Source Sep. 23, 2010
Complete MATLAB Script [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
12. Simulate a Source Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 12
13. Simulate a Source Sep. 23, 2010
Assignment #1 [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
14. Simulate Modulation Sep. 23, 2010
Source 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
15. Amplitude Modulation Sep. 23, 2010
Simulate with built-in functions [Prog4.m]
fs = 8000; % Sampling rate is 8000 samples per second
fc = 300; % Carrier frequency in Hz
t = [0:0.1*fs]'/fs; % Sampling times for 0.1 second
m = sin(20*pi*t); % Representation of the signal
v = ammod(m,fc,fs); % Modulate m to produce v
figure(1)
subplot(2,1,1); plot(t,m); % Plot m on top
subplot(2,1,2); plot(t,v); % Plot v below
mr = amdemod(v,fc,fs); % Demodulate v to produce m
figure(2);
subplot(2,1,1); plot(t,m); % Plot m on top
subplot(2,1,2); plot(t,mr); % 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
16. Amplitude Modulation Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 16
17. Amplitude Modulation Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 17
18. Amplitude Modulation Sep. 23, 2010
Don’t have the feel??? …. Try this
Define message signal, m( t ) = Vm sin ( 2πf 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 ( 2πf 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
19. Amplitude Modulation Sep. 23, 2010
Continued ….
Vm
Modulate the Signal, v( t ) = Vc 1 + sin ( 2πf mt ) sin ( 2πf c t )
Vc
v = (1+m/Vc).*c; % 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
20. Amplitude Modulation Sep. 23, 2010
Complete MATLAB Script [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); % Message
c = Vc*sin(2*pi*fc*t); % Carrier
v = (1+m/Vc).*c; % 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
21. Amplitude Modulation Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 21
22. Amplitude Modulation Sep. 23, 2010
Assignment #2 [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
23. Amplitude Modulation Sep. 23, 2010
Assignment #2 (Contd…) [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
24. Demodulation Sep. 23, 2010
Demodulate DSB-SC with filter [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
25. Demodulation Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 25
26. Demodulation Sep. 23, 2010
Ideal Demodulation of DSB-SC [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
27. Demodulation Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 27
28. Analog Communication Systems Sep. 23, 2010
Source Modulator
Channel
Destination Demodulator
Introduces noise … Additive White Gaussian Noise
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 28
29. Simulate Channel Sep. 23, 2010
Introducing AWGN [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
30. Simulate Channel Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 30
31. 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
32. Digital Communication Systems Sep. 23, 2010
Source Modulator
Channel
Destination Demodulator
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 32
33. Simulate BPSK Sep. 23, 2010
Simulation [Prog11.m]
%This program simulates BER of BPSK in AWGN channel%
clear all; close all; clc;
num_bit=100000; %Signal length
max_run=20; %Maximum number of iterations for a single SNR
Eb=1; %Bit energy
SNRdB=0:1:9; %Signal to Noise Ratio (in dB)
SNR=10.^(SNRdB/10);
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
34. Simulate BPSK Sep. 23, 2010
Simulation (Contd.) [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); %Generate binary data source
s=2*data-1; %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; %Calculate error/bit
avgError=avgError+Error; %Calculate error/bit for different runs
end %Termination of loop for different runs
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 34
35. Simulate BPSK Sep. 23, 2010
Simulation (Contd.) [Prog11.m]
BER_sim(count)=avgError/max_run; %Calculate BER for a particular SNR
end %Termination of loop for different SNR
BER_th=(1/2)*erfc(sqrt(SNR)); %Calculate analytical BER
close(hand);
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
36. Simulate BPSK Sep. 23, 2010
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 36
37. 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/ CL-
Engineering, 2nd edition, 2003.
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 37
38. Sep. 23, 2010
Thank You!
Questions???
aniruddha.chandra@ieee.org
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 38