11.instructional Manual Sample Program Output
11.instructional Manual Sample Program Output
xlabel(‘(b) n --.’);
Output:
Practical 1:
Aim:
To verify the sampling theorem and aliasing effects with various sampling
frequencies.
Algorithm:
1. Take modulating frequency Fm
2. Take amplitude A
3. Plot modulating signal x
4. Take sampling frequency Fs such that Fs>2Fm
5. Plot this sampled signal as Y1
6. Take sampling frequency Fs such that Fs=2Fm
7. Plot this sampled signal as Y2
8. Take sampling frequency Fs such that Fs<2Fm
9. Plot this sampled signal as Y3
10. Observe aliasing effect which occurs at Fs<2Fm
MATLAB program:
clc;
close all;
clear all;
disp('sampling Theorem and observe aliasing effect')
Fm=input('Enter the modulating frequency Fm='); % print original
modulating signal
A=input('Enter the amplitude A=');
t=0:0.1:10;
x=A*sin(2*3.14*Fm*t);
subplot(2,2,1);
plot(t,x);
title('Modulating signal');
xlabel('Time');
ylabel('Amplitude');
Fs1=input('Enter the sampling frequency Fs1(Fs>2Fm)='); % print
oversampled discret signal
n=0:0.2:5;
y1=A*sin(2*3.14*Fm*n/Fs1);
subplot(2,2,2);
stem(n,y1);
title('Fs>=2Fm');
xlabel('n');
ylabel('Amplitude');
Fs2=input('Enter the sampling frequency Fs2(Fs=2Fm)=='); % print sampled
discrete signal
n=0:0.2:5;
y2=A*sin(2*3.14*Fm*n/Fs2);
subplot(2,2,3);
stem(n,y2);
title('Fs=2Fm');
xlabel('n');
ylabel('Amplitude');
Fs3=input('Enter the sampling frequency Fs3(Fs<2Fm)=='); % print sampled
discrete signal
n=0:0.2:5;
y3=A*sin(2*3.14*Fm*n/Fs3);
subplot(2,2,4);
stem(n,y2);
title('Fs<2Fm');
xlabel('n');
ylabel('Amplitude');
Output:
Practical: 2
Aim:
Write a programs to study and verify DFT properties
Algorithm:
1. Take input sequence
2. Obtain its DFT using traditional formula method (use for loop for k and n)
3. Plot magnitude response (use ‘abs’)
4. Plot phase response (use ‘angle’)
5. Obtain inverse IDFT using formula method
Program:
clc;
close all;
clear all;
xn=input('Enter the input sequence=');
ln=length(xn);
xk=zeros(1,ln);
ixk=zeros(1,ln);
%obtain DFT
for k=0:ln-1
for n=0:ln-1
xk(k+1)=xk(k+1)+(xn(n+1)*exp((-i)*2*pi*k*n/ln));
end
end
t=0:ln-1;
subplot(221);
stem(t,xn);
ylabel('amplitude');
xlabel('time index');
title('input sequence');
%magnitude plot
magnitude=abs(xk);
t=0:ln-1;
subplot(222);
stem(t,magnitude);
ylabel('amplitude');
xlabel('k');
title('magnitude responce');
%phase responce
phase=angle(xk);
t=0:ln-1;
subplot(223);
stem(t,phase);
title('phase responce');
% inverse DFT
ixk=ixk./ln;
t=0:ln-1;
subplot(224);
stem(t,xn);
ylabel('amplitude');
xlabel('time index');
title('input sequence obtained after DFT and IDFT');
output:
Practical : 3
Aim:
Write a program to find 4 point circular convolution and compare the result with 8
point circular convolution to study aliasing effect in time domain
Algorithm:
1. Take input sequence x
2. Take input sequence h
3. Find length of input sequence x=N1
4. Find length of input sequence h=N2
5. Take number of point of DFT=N
6. Pad necessary number of zeros in both sequence to make it equal to length N
7. Calculate samples using circular convolution
8. Plot sequence x
9. Plot sequence h
10. Plot circular convolution
Program:
% Program for Computing Circular Convolution with zero padding
clc;
close all;
clear all;
x=input('enter the first sequence(length should be 4 or less than
4),x=');
h=input('enter the 2nd sequence (length should be 4 or less than
4),h=');
N1=length(x);
N2=length(h);
N=input('enter the no. of DFT points(4 or 8),N=');
x=[x,zeros(1,N-N1)];
h=[h,zeros(1,N-N2)];
y=zeros(1,N);
for m=0:1:N-1
for n=0:1:N-1
k1=(m-n);
k=mod(k1,N);
y(m+1)=y(m+1)+x(n+1)*h(k+1);
end
end
%plot sequences
n1=0:1:N-1;
subplot(311);
stem(n1,x);
title('first sequence,x');
xlabel('samples');
ylabel('magnitude');
subplot(312); stem(n1,h);
title('second sequence,h');
xlabel('samples'); ylabel('magnitude');
subplot(313); stem(n1,y);
disp('output sequence,y=');
disp(y);
title('circular convolution,y');
xlabel('samples');ylabel('magnitude');
Flowchart
(a) pole zero plot of Z-transfer function
1. Take numerator coefficient
2. Take denominator coefficient
3. Calculate poles and zeros
4. Display poles and zeros
5. Plot pole zeros on Z plane
Program:
clc;
clear all;
close all;
%enter the numerator and dinominator coeff. in square brackets
num=input('num coeff=');
den=input('den coeff=');
H=filt(num,den);
z=zero(H);
disp('zero are at');
disp(z);
[r p k]=residuez(num,den);
disp('poles are at');
disp(p);
zplane(num,den);
title('pole zero plot of LTI system in Z plane');
output
Flowchart
(b) Z Transform
1. Take x(n) input signal
2. Calculate its Z transform
3. Display x(Z)
4. Simplify it if required
clc;
clear all;
close all;
syms a n;
% Z trnasform of xn=1^n
xn=1^n;
Xz=ztrans(xn);
disp('x(n)=');
pretty(xn);
disp('X(z)=');
pretty(Xz);
% Z trnasform of xn=a^n
xn=a^n;
Xz=ztrans(xn);
disp('x(n)=');
pretty(xn);
disp('X(z)=');
pretty(Xz);
disp('X(z)=');
pretty(simplify(Xz));
Output:
Flowchart
(c) Inverse Z Transform
1. Take x(n) as input signl
2. Find its Z transform
3. Display x(n0 and X(z)
4. Calculate its inverse Z transform
5. Display x(n)
6. Simplify it if required
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main()
clrscr();
int x[10],y[10],N,M,L,k,n;
scanf("\n%d",&N);
for(k=1;k<=N;k++)
scanf("%d",&a[k]);
scanf("\n%d",&M);
for(k=0;k<M;k++)
scanf("%d",&b[k]);
scanf("%d",&L);
for(k=0;k<L;k++)
scanf("%d",&x[k]);
for(k=0;k<L;k++)
printf("\n%d",x[k]);
for(n=0;n<L;n++)
sumc=0;
sumd=0;
for(k=1;(k<=n)&&(k<=N);k++)
{ sumc+=a[k]*y[n-k]; }
for(k=0;(k<=n)&&(k<M);k++)
{ sumd+=b[k]*x[n-k]; }
y[n]=-sumc+sumd;
printf("\ny[%d]=%d",n,y[n]);
getch();
OUTPUT:-
y[0]=1
y[1]=0
Practical 5:
Aim:
To plot the poles and zeros of a transfer function when the coefficients of the
transfer function are given, study stability of different transfer functions.
%stability test
clc;
clear all;
close all;
num=input('enter the numerator coefficients of the filter');
den=input('enter the denominator coefficients of the filter');
H=filt(num,den);
z=zero(H);
disp('zeros are at ');
disp(z);
[r p k]=residuez(num,den);
disp('poles are at ');
disp(p);
zplane(num,den);
title('pole sero map of LTI system in Z plane');
if (p<=1)
disp('stable system');
else
disp('Non-stable system');
end
Practical 6:
Aim:
To study the effect of different windows on FIR filter response and see the effect
on the filter response.
Algorithm:
1. Declare n-order of filter, Fp-passband frquency, Fs-stopband frequency
2. Compute fn-normalized frequency
3. Calculate n+1 filter coefficients using various window functions to for Low Pass Filter.
4. Calculate frequency response vector h and the corresponding angular frequency vector w for
the digital filter for length n;
5. Calculate magnitude and phase response using frequency response vector h.
6. Plot magnitude and phase response for all window functions.
Programme:
clc;
clear all;
close all;
n=1000;
fp=300;
fs=1000;
fn=2*fp/fs;
%recatlgular window
window= rectwin(n+1);
b=fir1(n,fn,'low', window);
[h,w]=freqz(b,1,128);
figure (1);
subplot(411);
plot(w/pi,abs(h));
xlabel('normalized frequency');
ylabel('gain');
title('magnitude responce of LPF-reactangular window');
subplot(412);
plot(w/pi,angle(h));
xlabel('normalized frequency');
ylabel('angle');
title('phase responce of LPF-reactangular window');
%hamming window
window= hamming(n+1);
b=fir1(n,fn,'low', window);
[h,w]=freqz(b,1,128);
subplot(413);
plot(w/pi,abs(h));
xlabel('normalized frequency');
ylabel('gain');
title('magnitude responce of LPF-Hamming window');
subplot(414);
plot(w/pi,angle(h));
xlabel('normalized frequency');
ylabel('angle');
title('phase responce of LPF-Hamming window');
%hanning window
window= hanning(n+1);
b=fir1(n,fn,'low', window);
[h,w]=freqz(b,1,128);
figure (2);
subplot(411);
plot(w/pi,abs(h));
xlabel('normalized frequency');
ylabel('gain');
title('magnitude responce of LPF-Hanning window');
subplot(412);
plot(w/pi,angle(h));
xlabel('normalized frequency');
ylabel('angle');
title('phase responce of LPF-Hanning window');
%triangular window
window= triang(n+1);
b=fir1(n,fn,'low', window);
[h,w]=freqz(b,1,128);
subplot(413);
plot(w/pi,abs(h));
xlabel('normalized frequency');
ylabel('gain');
title('magnitude responce of LPF-Traingular window');
subplot(414);
plot(w/pi,angle(h));
xlabel('normalized frequency');
ylabel('angle');
title('phase responce of LPF-Traingular window');
OUTPUT:
Practical 7:
Aim:
Design Butterworth filter using Bilinear transformation method for LPF and
write a program to draw the frequency response of the filter.
Algorithm:
1. Take passband edge frequency in rad/sec
2. Take stopband edge frequency in rad/sec
3. Take passband ripple in db=
4. Take stopband ripple in db=
5. Take sampling frequency
6. Calculate order of filter using Butterworth Approximation
7. Compute coefficient using bilinear transformation method.
Output:
Practical 8:
Aim:
Design and implement two stage sampling rate converter.
Algorithm:
clc;
close all;
clear all;
fm = 10;
Fs = 140; % sampling frequency
t = 0:1/Fs:0.5; % time range for the input sequence
x = sin(2*pi*fm*t); % input sinusoidal signal
figure(1)
subplot(4,1,1)
stem(x);
xlabel('No. of samples');
ylabel('Amplitude');
title('input discrete sinusoidal sequence');
M = 2; % factor by which the input sequence is decimated
xd = decimate(x,M);
subplot(4,1,2)
stem(xd)
xlabel('No. of samples');
ylabel('Amplitude');
title('Decimated Sinusoidal Sequence');
L = 2; % factor by which the input sequence is interpolated
xI = interp(x,L);
subplot(4,1,3);
stem(xI);
xlabel('No. of samples');
ylabel('Amplitude');
title('Interpolated Sinuoidal Sequence')
L = 2; % coefficient by which the singal is interpolated
xI = interp(xd,L);
subplot(4,1,4)
stem(xI);
xlabel('No. of samples');
ylabel('Amplitude');
title('Original Signal Obtained After Interpolating the Decimated Signal');
Output:
Design Experiment:
Aim:
Computation of FFT for given function/ user defined function using inbuilt function and with pout using
inbuilt function
n = 0:6;
x = [4 6 2 1 7 4 8]; % function is given
a = fft(x);
mag = abs(a);
pha = angle(a);
subplot(2,1,1);
plot(mag);
grid on
title('Magnitude Response');
subplot(2,1,2);
plot(pha);
grid on
title('phase Response');
OUTPUT:
N-POINT FFT WITHOUT USING INBUILT FUNCTION OF USER DEFINED FUNCTION
clear all;
close all;
clc;
x=input('Enter the sequence x[n]= ');
N=input('Enter the value N point= ');
L=length(x);
x_n=[x,zeros(1,N-L)];
for i=1:N
for j=1:N
temp=-2*pi*(i-1)*(j-1)/N;
DFT_mat(i,j)=exp(complex(0,temp));
end
end
X_k=DFT_mat*x_n';
disp('N point DFT is X[k] = ');
disp(X_k);
mag=abs(X_k);
phase=angle(X_k)*180/pi;
subplot(2,1,1);
stem(mag);
xlabel('frequency index k');
ylabel('Magnitude of X[k]');
axis([0 N+1 -2 max(mag)+2]);
subplot(2,1,2);
stem(phase);
xlabel('frequency index k');
ylabel('Phase of X[k]');
axis([0 N+1 -180 180]);
Output:
For user defined sequence :
clc;
clear all;
close all;
tic;
x=input('enter the sequence');
n=input('enter the length of fft'); %compute fft
disp('fourier transformed signal');
X=fft(x,n)
subplot(1,2,1);stem(x); title('i/p signal');
xlabel('n --->');
ylabel('x(n) -->');grid;
subplot(1,2,2);stem(X);
title('fft of i/p x(n) is:');
xlabel('Real axis --->');
ylabel('Imaginary axis -->');grid;
OUTPUT:-
enter the sequence[1 .25 .3 4]
enter the length of fft4
fourier transformed signal