You are on page 1of 9

MATLAB Code for Steps 1&2 :

clear all;close all;clc;clf;


f=1000; %%%% Frequency of Intelligence Signal
fs=4000; %%%% Sampling Clock Frequency
step=1/(10000*f);
stepsh=1/(10000*fs);
t=0:step:3/f;
tsh=0:stepsh:3/f;
x=1.5*sin(2*pi*f*t);
clk=([square(2*pi*fs*t,50)]==1); %% Sampling Clock Signal
samp_hold=zeros(1,length(t));
samp=x.*clk; %%% Sampled Signal
set=0; %%% Memory Set
for i=1:length(t) %%% Block for Sample and Hold
if set==0 && clk(i)==1
set=1;
tmp=x(i);
elseif set==1 && clk(i)==0
set=0;
tmp=0;
end
samp_hold(i)=tmp;
end
[n1,d1]=butter(1,4*f*step,'low'); %Filters
recon_samp1=filter(n1,d1,samp);
recon_samp2=filter(n1,d1,recon_samp1);
recon_samp1=max(x)/max(recon_samp1)*recon_samp1; %%% Amplifiers
recon_samp2=max(x)/max(recon_samp2)*recon_samp2;
[n2,d2]=butter(1,4*f*step,'low');
recon_samp_hold1=filter(n2,d2,samp_hold);
recon_samp_hold2=filter(n2,d2,recon_samp_hold1);
recon_samp_hold1=max(x)/max(recon_samp_hold1)*recon_samp_hold1;
recon_samp_hold2=max(x)/max(recon_samp_hold2)*recon_samp_hold2;
figure(1);subplot(2,1,1)
plot(t,x)
xlabel('Time(in seconds)','color','b');
ylabel('x(t)','color','b');
title('\bfIntelligence Signal','fontsize',12);
subplot(2,1,2)
plot(t,clk)
ylim([-0.5 1.5])
xlabel('Time(in seconds)','color','b');
ylabel('clk(t)','color','b');
title('\bfClock Signal','fontsize',12);
figure(2);subplot(3,1,1)
plot(t,samp)
xlabel('Time(in seconds)','color','b');
ylabel('samp(t)','color','b');
title(['\bfNatural Sampling at ',num2str(fs),'Hz'],'fontsize',12);
subplot(3,1,2)
plot(t,recon_samp1)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp1(t)','color','b');
title('\bfReconstructed Signal(Single filter)','fontsize',12);
subplot(3,1,3)
plot(t,recon_samp2)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp2(t)','color','b');
title('\bfReconstructed Signal(Double filter)','fontsize',12);
figure(3);subplot(3,1,1)
plot(t,samp_hold)
xlabel('Time(in seconds)','color','b');
ylabel('samp-hold(t)','color','b');
title(['\bfFlat-top Sampling at ',num2str(fs),'Hz'],'fontsize',12);
subplot(3,1,2)
plot(t,recon_samp_hold1)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold1(t)','color','b');
title('\bfReconstructed Signal(Single filter)','fontsize',12);
subplot(3,1,3)
plot(t,recon_samp_hold2)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold2(t)','color','b');
title('\bfReconstructed Signal(Double filter)','fontsize',12);

Output:
Intelligence Signal of 1.5V (p-p), 1 kHz and clock signal with 4kHz frequency.
Figure 1

0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
-1
0
1
2
Time(in seconds)
x
(
t
)
Intelligence Signal
0 0.5 1 1.5 2 2.5 3
x 10
-3
-0.5
0
0.5
1
1.5
Time(in seconds)
c
l
k
(
t
)
Clock Signal
Figure 2

Figure 3

0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
0
2
Time(in seconds)
s
a
m
p
(
t
)
Natural Sampling at 4000Hz
0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
1
(
t
)
Reconstructed Signal(Single filter)
0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
2
(
t
)
Reconstructed Signal(Double filter)
0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
0
2
Time(in seconds)
s
a
m
p
-
h
o
l
d
(
t
)
Flat-top Sampling at 4000Hz
0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
1
(
t
)
Reconstructed Signal(Single filter)
0 0.5 1 1.5 2 2.5 3
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
2
(
t
)
Reconstructed Signal(Double filter)
MATLAB Code for Step 3:
clear all;close all;clc;clf;
f=5000; %%%% Frequency of Intelligence Signal
step=1/(10000*f);
t=0:step:10/f;
x=1.5*sin(2*pi*f*t);
figure(1)
plot(t,x)
xlabel('Time(in seconds)','color','b');
ylabel('x(t)','color','b');
title(['\bfIntelligence Signal of ',num2str(f),' Hz'],'fontsize',12);

%%% 16000Hz
fs=16000; %%%% Sampling Clock Frequency
stepsh=1/(10000*fs);
tsh=0:stepsh:3/f;
clk=([square(2*pi*fs*t,50)]==1); %% Sampling Clock Signal
samp_hold=zeros(1,length(t));
samp=x.*clk; %%% Sampled Signal
set=0; %%% Memory Set
for i=1:length(t) %%% Block for Sample and Hold
if set==0 && clk(i)==1
set=1;
tmp=x(i);
elseif set==1 && clk(i)==0
set=0;
tmp=0;
end
samp_hold(i)=tmp;
end
[n1,d1]=butter(1,4*f*step,'low'); %Filters
recon_samp1=filter(n1,d1,samp);
recon_samp2=filter(n1,d1,recon_samp1);
recon_samp1=max(x)/max(recon_samp1)*recon_samp1; %%% Amplifiers
recon_samp2=max(x)/max(recon_samp2)*recon_samp2;
[n2,d2]=butter(1,4*f*step,'low');
recon_samp_hold1=filter(n2,d2,samp_hold);
recon_samp_hold2=filter(n2,d2,recon_samp_hold1);
recon_samp_hold1=max(x)/max(recon_samp_hold1)*recon_samp_hold1;
recon_samp_hold2=max(x)/max(recon_samp_hold2)*recon_samp_hold2;
figure(2),
subplot(3,1,1)
plot(t,clk)
ylim([-0.5 1.5])
xlabel('Time(in seconds)','color','b');
ylabel('clk(t)','color','b');
title(['\bfClock Signal of ',num2str(fs), 'Hz'],'fontsize',12);
subplot(3,1,2)
plot(t,recon_samp_hold1)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold1(t)','color','b');
title('\bfReconstructed Signal(Single filter)','fontsize',12);
subplot(3,1,3)
plot(t,recon_samp_hold2)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold2(t)','color','b');
title('\bfReconstructed Signal(Double filter)','fontsize',12);

%%% 9600Hz
fs=9600; %%%% Sampling Clock Frequency
step=1/(10000*f);
stepsh=1/(10000*fs);
tsh=0:stepsh:3/f;
clk=([square(2*pi*fs*t,50)]==1); %% Sampling Clock Signal
samp_hold=zeros(1,length(t));
samp=x.*clk; %%% Sampled Signal
set=0; %%% Memory Set
for i=1:length(t) %%% Block for Sample and Hold
if set==0 && clk(i)==1
set=1;
tmp=x(i);
elseif set==1 && clk(i)==0
set=0;
tmp=0;
end
samp_hold(i)=tmp;
end
[n1,d1]=butter(1,4*f*step,'low'); %Filters
recon_samp1=filter(n1,d1,samp);
recon_samp2=filter(n1,d1,recon_samp1);
recon_samp1=max(x)/max(recon_samp1)*recon_samp1; %%% Amplifiers
recon_samp2=max(x)/max(recon_samp2)*recon_samp2;
[n2,d2]=butter(1,4*f*step,'low');
recon_samp_hold1=filter(n2,d2,samp_hold);
recon_samp_hold2=filter(n2,d2,recon_samp_hold1);
recon_samp_hold1=max(x)/max(recon_samp_hold1)*recon_samp_hold1;
recon_samp_hold2=max(x)/max(recon_samp_hold2)*recon_samp_hold2;
figure(3),
subplot(3,1,1)
plot(t,clk)
ylim([-0.5 1.5])
xlabel('Time(in seconds)','color','b');
ylabel('clk(t)','color','b');
title(['\bfClock Signal of ',num2str(fs), 'Hz'],'fontsize',12);
subplot(3,1,2)
plot(t,recon_samp_hold1)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold1(t)','color','b');
title('\bfReconstructed Signal(Single filter)','fontsize',12);
subplot(3,1,3)
plot(t,recon_samp_hold2)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold2(t)','color','b');
title('\bfReconstructed Signal(Double filter)','fontsize',12);

%%% 6000Hz
fs=6000; %%%% Sampling Clock Frequency
step=1/(10000*f);
stepsh=1/(10000*fs);
tsh=0:stepsh:3/f;
clk=([square(2*pi*fs*t,50)]==1); %% Sampling Clock Signal
samp_hold=zeros(1,length(t));
samp=x.*clk; %%% Sampled Signal
set=0; %%% Memory Set
for i=1:length(t) %%% Block for Sample and Hold
if set==0 && clk(i)==1
set=1;
tmp=x(i);
elseif set==1 && clk(i)==0
set=0;
tmp=0;
end
samp_hold(i)=tmp;
end
[n1,d1]=butter(1,4*f*step,'low'); %Filters
recon_samp1=filter(n1,d1,samp);
recon_samp2=filter(n1,d1,recon_samp1);
recon_samp1=max(x)/max(recon_samp1)*recon_samp1; %%% Amplifiers
recon_samp2=max(x)/max(recon_samp2)*recon_samp2;
[n2,d2]=butter(1,4*f*step,'low');
recon_samp_hold1=filter(n2,d2,samp_hold);
recon_samp_hold2=filter(n2,d2,recon_samp_hold1);
recon_samp_hold1=max(x)/max(recon_samp_hold1)*recon_samp_hold1;
recon_samp_hold2=max(x)/max(recon_samp_hold2)*recon_samp_hold2;
figure(4),
subplot(3,1,1)
plot(t,clk)
ylim([-0.5 1.5])
xlabel('Time(in seconds)','color','b');
ylabel('clk(t)','color','b');
title(['\bfClock Signal of ',num2str(fs), 'Hz'],'fontsize',12);
subplot(3,1,2)
plot(t,recon_samp_hold1)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold1(t)','color','b');
title('\bfReconstructed Signal(Single filter)','fontsize',12);
subplot(3,1,3)
plot(t,recon_samp_hold2)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold2(t)','color','b');
title('\bfReconstructed Signal(Double filter)','fontsize',12);

%%% 4000Hz
fs=4000; %%%% Sampling Clock Frequency
step=1/(10000*f);
stepsh=1/(10000*fs);
tsh=0:stepsh:3/f;
clk=([square(2*pi*fs*t,50)]==1); %% Sampling Clock Signal
samp_hold=zeros(1,length(t));
samp=x.*clk; %%% Sampled Signal
set=0; %%% Memory Set
for i=1:length(t) %%% Block for Sample and Hold
if set==0 && clk(i)==1
set=1;
tmp=x(i);
elseif set==1 && clk(i)==0
set=0;
tmp=0;
end
samp_hold(i)=tmp;
end
[n1,d1]=butter(1,4*f*step,'low'); %Filters
recon_samp1=filter(n1,d1,samp);
recon_samp2=filter(n1,d1,recon_samp1);
recon_samp1=max(x)/max(recon_samp1)*recon_samp1; %%% Amplifiers
recon_samp2=max(x)/max(recon_samp2)*recon_samp2;
[n2,d2]=butter(1,4*f*step,'low');
recon_samp_hold1=filter(n2,d2,samp_hold);
recon_samp_hold2=filter(n2,d2,recon_samp_hold1);
recon_samp_hold1=max(x)/max(recon_samp_hold1)*recon_samp_hold1;
recon_samp_hold2=max(x)/max(recon_samp_hold2)*recon_samp_hold2;
figure(5)
subplot(3,1,1)
plot(t,clk)
ylim([-0.5 1.5])
xlabel('Time(in seconds)','color','b');
ylabel('clk(t)','color','b');
title(['\bfClock Signal of ',num2str(fs), 'Hz'],'fontsize',12);
subplot(3,1,2)
plot(t,recon_samp_hold1)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold1(t)','color','b');
title('\bfReconstructed Signal(Single filter)','fontsize',12);
subplot(3,1,3)
plot(t,recon_samp_hold2)
xlabel('Time(in seconds)','color','b');
ylabel('recon-samp-hold2(t)','color','b');
title('\bfReconstructed Signal(Double filter)','fontsize',12);

Output:
Figure 1

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-1.5
-1
-0.5
0
0.5
1
1.5
Time(in seconds)
x
(
t
)
Intelligence Signal of 5000 Hz
Figure 2

Figure 3


0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-0.5
0
0.5
1
1.5
Time(in seconds)
c
l
k
(
t
)
Clock Signal of 16000Hz
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
1
(
t
)
Reconstructed Signal(Single filter)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
2
(
t
)
Reconstructed Signal(Double filter)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-0.5
0
0.5
1
1.5
Time(in seconds)
c
l
k
(
t
)
Clock Signal of 9600Hz
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
1
(
t
)
Reconstructed Signal(Single filter)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
2
(
t
)
Reconstructed Signal(Double filter)
Figure 4

Figure 5

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-0.5
0
0.5
1
1.5
Time(in seconds)
c
l
k
(
t
)
Clock Signal of 6000Hz
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
1
(
t
)
Reconstructed Signal(Single filter)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
2
(
t
)
Reconstructed Signal(Double filter)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-0.5
0
0.5
1
1.5
Time(in seconds)
c
l
k
(
t
)
Clock Signal of 4000Hz
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
1
(
t
)
Reconstructed Signal(Single filter)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
-3
-2
0
2
Time(in seconds)
r
e
c
o
n
-
s
a
m
p
-
h
o
l
d
2
(
t
)
Reconstructed Signal(Double filter)