AM and DSB-SC Modulation and Demodulation of a Periodic Square Wave (Matlab)

We once had a homework way back when decided to share it. I edited this script which is in Matlab. I hope you like it. It simply is an analysis of AM and DSB-SC Modulation and Demodulation of a Periodic Square Wave.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
%Amplitude Modulation with a periodic sqare wave and its spectrum analysis
%Show the time domain and frquency domain representation of DSB-AM and
%DSB-SC modulations
%By : John Roach – 6 March 2009
%visit my site at http://johnroach.info
N = 1024; %N point FFT N>fc to avoid freq domain aliasing
fs = 4096; % Sample frequency
t = (0:N-1)/fs;
fc = 600; %Carrier Frequency
fm2 = 80; %Message Frequency
Ec = 20; %Carrier Amplitude
Em2 = 5; %Messagae Amplitude
% Try changing the message and carrier amplitudes to see the effect in
% DSB-AM modulation
%———Double SideBand Full Carrier Modulation (DSB-FC(AM))
A = Ec + Em2*square(2*pi*fm2*t);%Envelope/eliminate the carrier amplitude
m = A.*sin(2*pi*fc*t); %to convert DSB-AM to DSB-SC
Mf = 2/N*abs(fft(m,N));
f = fs * (0 : N/2) / N;%Since the fft result is symmetrical, only the
%positive half is sufficient for spectral representation
close all;
figure(’Name’,'Time/Fequency domain representations of DSB-AM signals’);
subplot(2,1,1); %Time domain plot
plot(t(1:N/2),m(1:N/2),t(1:N/2),A(1:N/2),’r',t(1:N/2),-A(1:N/2),’r');
title(’Time Domain Representation’);
xlabel(’Time’); ylabel(’Modulated signal’);
subplot(2,1,2); %Frequency Domain Plot
plot(f(1:256),Mf(1:256));
title(’Frequency Domain Representation’);
xlabel(’Frequency (Hz)); ylabel(’Spectral Magnitude’);
%———-Double SideBand Suppressed Carrier DSB-SC———-
A = Em2*square(2*pi*fm2*t) ; %Envelope/eliminate the carrier amplitude
m = A.*sin(2*pi*fc*t); %to convert DSB-AM to DSB-SC
Mf = 2/N*abs(fft(m,N));
figure(’Name’,'Time/Fequency domain representations of DSB-SC signals’);
subplot(2,1,1); %Time domain plot
plot(t(1:N/2),m(1:N/2),t(1:N/2),A(1:N/2),’r',t(1:N/2),-A(1:N/2),’r');
title(’Time Domain Representation’);
xlabel(’Time’); ylabel(’Modulated signal’);
subplot(2,1,2); %Frequency Domain Plot
plot(f(1:256),Mf(1:256));
title(’Frequency Domain Representation’);
xlabel(’Frequency (Hz)); ylabel(’Spectral Magnitude’);
text(15,60,’Carrier’);
%——————————————————————–
Fork me on GitHub

The BeagleBoard Has Arrived!!

The long awaited Beagle board has arrived.


Even tough the team’s enthusiasm was up the roof we were not able to try it out. More on this later. I would also like to inform all people who is following this blog religiously that our project is now hosted on SourceForge.net at http://sourceforge.net/projects/theblackbox/ . And I have also set up a CVS so those who want to follow the code will be able to follow it from the net.

The CVS code is as follows

cvs -d:pserver:anonymous@theblackbox.cvs.sourceforge.net:/cvsroot/theblackbox login

cvs -z3 -d:pserver:anonymous@theblackbox.cvs.sourceforge.net:/cvsroot/theblackbox co -P modulename

I am sorry to say due to some weird problem you can not view the CVS modules from Sourceforge. You will need to use some kind of client. I am currently using Eclipse as my development IDE hence all my CVS materials comes from that. I have heard that TortoiseCVS is quite neat in its own way (for Windows) but I’d rather use Eclipse your choice.

Continue reading