% VERIFICATION OF SAMPLING THEOREM
fs=input('ENTER THE FREQUENCY OF THE SIGNAL TO BE SAMPLED');
fm=input('ENTER THE SAMPLING FREQUENCY');
t=0:fs/fm:1;
stem(t,sin(2*pi*t));
title('VERIFICATION OF SAMPLING THEOREM')
xlabel('t-->')
ylabel('Amplitude-->')
% CIRCULAR CONVOLUTION USING DEFINITION & ALSO VERIFICATION USING DFT
x1=[1,2,2];
x2=[1,2,3,4];
n1=length(x1);
n2=length(x2);
subplot(2,2,1);
stem(x1);
title('INPUT SEQUENCE 1')
xlabel('n-->')
ylabel('x1[n]-->')
subplot(2,2,2);
stem(x2);
title('INPUT SEQUENCE 2')
xlabel('n-->')
ylabel('x2[n]-->')
N=max(n1,n2);
x1=[x1,zeros(1,N-n1)];
x2=[x2,zeros(1,N-n2)];
% USING THE FORMULA
for (i=0:1:N-1)
sum=0;
for (j=0:1:N-1)
m=mod((i-j),N);
sum=sum+x1(j+1)*x2(m+1);
end
y1(i+1)=sum;
end
subplot(2,2,3);
stem(n,y1);
title('CIRCULAR CONVOLUTION USING FORMULA')
xlabel('n-->')
ylabel('y1[n]-->')
% USING DFT
x1f=fft(x1);
x2f=fft(x2);
y2f=x1f.*x2f;
y2=ifft(y2f);
subplot(2,2,4);
stem(n,y2);
title('CIRCULAR CONVOLUTION USING DFT')
xlabel('n-->')
ylabel('y2[n]-->')
% DESIGN OF BUTTERWORTH FILTER USING BILINEAR TRANSFROMATION
wp=1500; % PASSBAND FREQUENCY
ws=3000; % STOPBAND FREQUENCY
fsam=10000; % SAMPLING FREQUENCY
w1=2*wp/fsam; % NORMALIZING
w2=2*ws/fsam;
rp=1; % PASSBAND RIPPLE
rs=40; % STOPBAND RIPPLE
[N,WN]=buttord(wp,ws,rp,rs,'s');
[b,a]=butter(N,WN,'s');
[z,p,k]=tf2zp(b,a);
[zd,pd,kd]=bilinear(z,p,k,fsam);
[b,a]=zp2tf(zd,pd,kd);
[y,n]=freqz(b,a,1024);
figure;
plot(fsam*n/(2*pi),angle(y));
title('Plot of Phase Response of Butterworth Filter')
ylabel('Angle-->')
figure;
plot(fsam*n/(2*pi),abs(y));
title('Plot of Magnitude Response of Butterworth Filter')
ylabel('Amplitude-->')
%DESIGN OF CHEBYSHEV FILTER USING BLT
wp=1500; % PASSBAND FREQUENCY
ws=3000; % STOPBAND FREQUENCY
fs=10000; % SAMPLING FREQUENCY
w1=2*wp/fs;
w2=2*ws/fs;
rp=1; % PASSBAND RIPPLE
rs=40; % STOPBAND RIPPLE
[N,WN]=cheb1ord(wp,ws,rp,rs,'s');
[b,a]=cheby1(N,rp,WN,'s');
[z,p,k]=tf2zp(b,a);
[zd,pd,kd]=bilinear(z,p,k,fs);
[b,a]=zp2tf(zd,pd,kd);
[y,n]=freqz(b,a,1024);
plot(fs*n/(2*pi),abs(y));
title('PLOT OF MAGNITUDE RESPONSE')
ylabel('AMPLITUDE')
figure;
plot(fs*n/(2*pi),angle(y));
title('PLOT OF PHASE RESPONSE')
ylabel('ANGLE')
% Linear Convolution Of Two Sequences
x=input('Enter The First Sequence : ');
h=input('Enter The Second Sequence : ');
y1=conv(x,h);
subplot(2,1,1);
stem(x);
title('INPUT SEQUENCE 1')
xlabel('n-->');
ylabel('x[n]');
subplot(2,1,2);
stem(h);
title('INPUT SEQUENCE 2')
xlabel('n-->');
ylabel('h[n]');
figure;
subplot(3,1,1);
stem(y1);
title('LINEAR CONVOLUTION OF x[n] & h[n]')
xlabel('n-->');
ylabel('y[n]');
% LINEAR CONVOLUTION USING CIRCULAR CONVOLUTION
nx=length(x);
nh=length(h);
n=nx+nh-1;
x=[x,zeros(1,n-nx)];
h=[h,zeros(1,n-nh)];
N=length(x);
xf=fft(x,N);
hf=fft(h,N);
y2f=xf.*hf;
y2=ifft(y2f);
i=1:1:N;
subplot(3,1,2);
stem(i,y2);
title('LINEAR CONVOLUTION OF x[n] & h[n] USING CIRCULAR CONVOLUTION')
xlabel('n-->');
ylabel('y2[n]');
% CIRCULAR CONVOLUTION
n1=max(nx,nh);
xf=fft(x,n1);
hf=fft(h,n1);
y3f=xf.*hf;
y3=ifft(y3f);
i=1:1:n1;
subplot(3,1,3);
stem(i,y3);
title('CIRCULAR CONVOLUTION OF x[n] & h[n]')
xlabel('n-->');
ylabel('y3[n]');
% CIRCULAR CONVOLUTION USING DEFINITION & ALSO VERIFICATION USING DFT
x1=[1,2,2];
x2=[1,2,3,4];
n1=length(x1);
n2=length(x2);
subplot(2,2,1);
stem(x1);
title('INPUT SEQUENCE 1')
xlabel('n-->')
ylabel('x1[n]-->')
subplot(2,2,2);
stem(x2);
title('INPUT SEQUENCE 2')
xlabel('n-->')
ylabel('x2[n]-->')
N=max(n1,n2);
x1=[x1,zeros(1,N-n1)];
x2=[x2,zeros(1,N-n2)];
% USING THE FORMULA
for (i=0:1:N-1)
sum=0;
for (j=0:1:N-1)
m=mod((i-j),N);
sum=sum+x1(j+1)*x2(m+1);
end
y1(i+1)=sum;
end
subplot(2,2,3);
stem(n,y1);
title('CIRCULAR CONVOLUTION USING FORMULA')
xlabel('n-->')
ylabel('y1[n]-->')
% USING DFT
x1f=fft(x1);
x2f=fft(x2);
y2f=x1f.*x2f;
y2=ifft(y2f);
subplot(2,2,4);
stem(n,y2);
title('CIRCULAR CONVOLUTION USING DFT')
xlabel('n-->')
ylabel('y2[n]-->')