Matlab
Matlab
t + = 2 sin 2 sin 1
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 20
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
Amplitude Modulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 21
Sep. 23, 2010
Amplitude Modulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 22
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
Amplitude Modulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 23
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
Amplitude Modulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 24
Sep. 23, 2010
Demodulation
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 25
Sep. 23, 2010
Demodulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 26
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);
Demodulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 27
Sep. 23, 2010
Demodulation
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 28
Sep. 23, 2010
Analog Communication Systems
Source
Channel
Destination Demodulator
Modulator
Introduces noise Additive White Gaussian Noise
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 29
Sep. 23, 2010
Simulate Channel
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 30
Sep. 23, 2010
Simulate Channel
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 31
Sep. 23, 2010
Presentation Outline
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 32
Sep. 23, 2010
Digital Communication Systems
Source
Channel
Destination Demodulator
Modulator
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 33
Sep. 23, 2010
Simulate BPSK
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 34
Sep. 23, 2010
Simulate BPSK
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 35
Sep. 23, 2010
Simulate BPSK
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 36
Sep. 23, 2010
Simulate BPSK
A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 37
Sep. 23, 2010
References
[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 38
Sep. 23, 2010
Thank You!
Questions???
[email protected]