Ex.
No: 01 CONVOLUTION BY OVERLAP ADD & SAVE METHOD 09L240
21-06-2011 09L242
09L243
PROGRAM CODE:
clc;
cleur ull;
close ull;
%COMPUTATION OF CONVOLUTION BY OVERLAP ADD AND OVERLAP SAVE METHOD
ch= menu('CHOOSE A TYPE OF CONVOLUTION','[Link] ADD METHOD','[Link]
SAVE METHOD');
x=lnput('Enter the lnput slgnul : '); %getting input signal
n1= lnput('Enter the lower tlme lndex : ');
h=lnput('Enter the lmpulse response of the system : '); %getting impulse response
h1= lnput('Enter the lower tlme lndex : ');
l=lnput('Enter the length of euch sectlon block : ');
t=length(x)+length(h)-1; %calculating length and matrix
index
ll1=length(x);
m=length(h);
n2= length(x)-1+n1;
n= n1:n2;
h2= length(h)-1+h1;
z1=h1:h2;
hf=h;
h=[h zeros(1,l-1)];
h=h';r=[];xf=x;
swltch ch
cuse 1, %overlap add
method
q=[]; d=[];
z=mod(ll1,l);
lf(z-=0)
x=[x zeros(1,l-z)]; %dividing into
blocks
end
ll2=length(x);
s=ll2/l;
for g=1:s
[Link]: 01 CONVOLUTION BY OVERLAP ADD & SAVE METHOD 09L240
21-06-2011 09L242
09L243
d=[d x(1:l)];
d=[d zeros(1,m-1)]; %padding
zeros
d=d';
for b=2:length(d) %generating toeplitz
matrix
d(1,b)=d(length(d),b-1);
for c=2:length(d)
d(c,b)=d(c-1,b-1);
end;end;
y=d*h; %performing
convolution
y=y';
r=[r y];
x=x(l+1:length(x));
d=[];
end
l1=l;
for z=1:s-1
for l=l+1:l+m-1
r(l)=r(l)+r(l1+m); %overlapping results and
adding
l1=l+1;
end
l1=l;
lf(z==1)
q=[q r(1:l+m-1)];
else
q=[q r(m:l+m-1)];
end
r=r(l+m:length(r)); %concatenating the
results
end
q=[q r(m:l+m-1)];
r=q;
cuse 2, %overlap save
method
x=[zeros(1,m-1) x zeros(1,10)]; %initial padding of
zeros
for s=1:15
d=x(1:l+m-1); %dividing into
blocks
[Link]: 01 CONVOLUTION BY OVERLAP ADD & SAVE METHOD 09L240
21-06-2011 09L242
09L243
d=d';
for b=2:length(d)
d(1,b)=d(length(d),b-1); %generating toeplitz
matrix
for c=2:length(d)
d(c,b)=d(c-1,b-1);
end; end;
y=d*h; %performing
convolution
y=y';
r=[r y(m:length(y))]; %discarding m-1
elements
x=x(l+1:length(x));
lf(dlff(x)==0) %concatenating the
results
breuk;
end ; end; end;
res=r(1:t);
m1=n1+h1; m2=n2+h2;
m=m1:m2;
dlsp('THE INPUT SIGNAL IS : '); dlsp(xf); %displaying the inputs
dlsp('THE IMPULSE RESPONSE IS : '); dlsp(hf);
dlsp('THE OUTPUT SIGNAL IS : '); dlsp(res); %displaying the result
subplot(3,1,1); %plotting the
results
stem(n,xf);
xlubel('n'); ylubel('x[n]');
tltle('INPUT SIGNAL');
subplot(3,1,2);
stem(z1,hf);
xlubel('n'); ylubel('h[n]');
tltle('IMPULSE RESPONSE');
subplot(3,1,3);
stem(m,res);
xlubel('n'); ylubel('y[n]');
tltle('OUTPUT SIGNAL');
INPUT:
OVERLAP ADD METHOD:
Enter the lnput slgnul : [1 2 3 5 6 7 4 2 4 5 6]
Enter the lower tlme lndex : 0
Enter the lmpulse response of the system : [3 4]
[Link]: 01 CONVOLUTION BY OVERLAP ADD & SAVE METHOD 09L240
21-06-2011 09L242
09L243
Enter the lower tlme lndex : 0
Enter the length of euch sectlon block : 4
THE INPUT SIGNAL IS :
1 2 3 5 6 7 4 2 4 5 6
THE IMPULSE RESPONSE IS :
3 4
THE OUTPUT SIGNAL IS :
3 10 17 27 38 45 40 22 20 31 38 24
OVERLAP SAVE METHOD:
Enter the lnput slgnul : [1 2 3 5 6 7 4 2 4 5 6]
Enter the lower tlme lndex : 0
Enter the lmpulse response of the system : [3 4]
Enter the lower tlme lndex : 0
Enter the length of euch sectlon block : 3
THE INPUT SIGNAL IS :
1 2 3 5 6 7 4 2 4 5 6
THE IMPULSE RESPONSE IS :
3 4
THE OUTPUT SIGNAL IS :
3 10 17 27 38 45 40 22 20 31 38 24
OUTPUT:
[Link]: 01 CONVOLUTION BY OVERLAP ADD & SAVE METHOD 09L240
21-06-2011 09L242
09L243