AIM:
Write a MATLAB Script to perform discrete linear convolution for the given two
sequences and also prove by manual calculation.
APPARATUS REQUIRED:
PC, MATLAB software
FLOWCHART:
START
STOP
THEORY:
LINEAR CONVOLUTION:
The response y[n] of a LTI system for any arbitrary input x[n] is given by convolution of
impulse response h[n] of the system and the arbitrary input x[n].
y[n] = x[n]*h[n] = k
x[ k ]h [ n k ]
or k
h[ k ] x[ n k]
If the input x[n] has N1 samples and impulse response h[n] has N2 samples then the output
sequence y[n] will be a finite duration sequence consisting of (N1 + N2 - 1) samples. The
convolution results in a non periodic sequence called Aperiodic convolution.
LIBRARY FUNCTION:
ALGORITHM/PROCEDURE:
LINEAR CONVOLUTION:
1. Enter the sequences (Input x[n] and the Impulse response h[n])
2. Perform the linear convolution between x[k] and h[k] and obtain y[n].
3. Find the FFT of x[n] & h[n].Obtain X and H
4. Multiply X and H to obtain Y
5. Find the IFFT of Y to obtain y’[n]
6. Compute error in time domain e=y[n]-y’[n]
7. Plot the Results
AIM:
Write a MATLAB Script to perform discrete circular convolution for the given two
sequences and also prove by manual calculation.
APPARATUS REQUIRED:
PC, MATLAB software
FLOWCHART:
START
STOP
THEORY:
CIRCULAR CONVOLUTION
The convolution of two periodic sequences with period N is called circular convolution
of two signals x1[n] and x2[n] denoted by
N 1 N 1
where x1[(n-k) mod N] is the reflected and circularly translated version of x1[n].
x1[n] * x2[n] = IDFTN { DFTN (x1[n] ) . DFTN (x2[n])}
It can be performed only if both the sequences consist of equal number of samples. If the
sequences are different in length then convert the smaller size sequence to that of larger size by
appending zeros
ALGORITHM/PROCEDURE:
CIRCULAR CONVOLUTION
1. Enter the sequences (input x[n] and the impulse response h[n])
2. Make the length of the sequences equal by padding zeros to the smaller length sequence.
3. Perform the circular convolution between x[k] and h[k]and obtain y[n].
4. Find the FFT of x[n] & h[n].Obtain X and H
5. Multiply X and H to obtain Y
6. Find the IFFT of Y to obtain y’[n]
7. Compute error in time domain e=y[n]-y’[n]
8. Plot the Results
MATLAB Code
3. Using DFT and IDFT
RESULT:
The circular convolutions are performed by using MATLAB script and the program
results are verified by manual calculation
EX.No:3 DISCRETE FOURIER TRANSFORM
DATE:
AIM:
Write a MATLAB program to perform the Discrete Fourier Transform for the given
sequences.
. APPARATUS REQUIRED:
PC, MATLAB software
FLOWCHART:
START
STOP
THEORY:
DISCRETE FOURIER TRANSFORM
Fourier analysis is extremely useful for data analysis, as it breaks down a signal into
constituent sinusoids of different frequencies. For sampled vector data Fourier analysis is
performed using the Discrete Fourier Transform (DFT).
The Discrete Fourier transform computes the values of the Z-transform for evenly spaced
points around the circle for a given sequence.
If the sequence to be represented is of finite duration i.e. it has only a finite number of
non-zero values, the transform used is Discrete Fourier transform.
It finds its application in Digital Signal processing including Linear filtering, Correlation
analysis and Spectrum analysis.
N 1
1 j2 n k N
X(k)
N
x(n) e , for k 0 ... N 1
n0
Although the functions here are described as complex series, setting the imaginary part to
0 can represent real valued series. In general, the transform into the frequency domain will be a
complex valued function, that is, with magnitude and phase.
LIBRARY FUNCTIONS:
AIM:
Write a MATLAB Script to compute Discrete Fourier Transform and Inverse Discrete
Fourier Transform of the given sequence using FFT algorithms (DIT-FFT & DIF-FFT)
APPARATUS REQUIRED:
PC, MATLAB software
FLOWCHART:
START
STOP
THEORY:
DFT is a powerful tool for performing frequency analysis of discrete time signal and it is
described as a frequency domain representation of a DT sequence.
The DFT of a finite duration sequence x[n] is given by
N 1
j 2 πnk/N
X (k) = x(n)e k=0, 1….N-1
n0
which may conveniently be written in the form
N 1
X (k) = x(n)w N
nk
k=0, 1….N-1
n0
COMPUTATION OF DFT:
To compute DFT, it requires N2 multiplication and (N-1) N complex addition. Direct
computation of DFT is basically inefficient precisely because it does not exploit the symmetry
and periodicity properties of phase factor WN.
N 1
1 nk
x [n] =
N
X (k )W N
n0
where, wN=e-j2/N.
Taking conjugate and multiplying by N, we get,
N 1
N x*[n] =
* nk
X ( k )W N
k 0
The right hand side of the equation is the DFT of the sequence X*(k). Now x[n] can be
found by taking the complex conjugate of the DFT and dividing by N to give,
N 1
1
* nk *
x [n]= [ X (k )W N ]
N
k 0
LIBRARY FUNCTION:
fft: Discrete Fourier transform.
fft(x) is the discrete Fourier transform (DFT) of vector x. For matrices, the FFT operation
is applied to each column. For N-Dimensional arrays, the FFT operation operates on the first
non-singleton dimension.
ditfft: Decimation in time (DIT)fft
ditfft(x) is the discrete Fourier transform (DFT) of vector x in time domain decimation
diffft: Decimation in frequency (DIF)fft
diffft(x) is the discrete Fourier transform (DFT) of vector x in Frequency domain decimation
ALGORITHM/PROCEDURE:
1. Input the given sequence x[n]
2. Compute the Discrete Fourier Transform using FFT library function (ditfft or diffft) and
obtain X[k]
3. Compute the Inverse Discrete Fourier Transform using FFT library function (ditfft or
diffft) and obtain X[n] by following steps
a. Take conjugate of X [k] and obtain X[k]*
b. Compute the Discrete Fourier Transform using FFT library function (ditfft or
diffft) for X[k]* and obtain N.x[n]*
c. Once again take conjugate for N.x[n]* and divide by N to obtain x[n]
4. Display the results.
SOURCE CODE:(DITFFT)
clc;
clear all;
close all;
N=input('Enter the number of elements:');
for i=1:N
re(i)= input('Enter the real part of the element:');
im(i)= input('Enter the imaginary part of the element:');
end
%% Call Dit_fft function
[re1,im1]= ditfft(re,im,N);
disp(re1);
disp(im1);
figure(1);
subplot(2,2,1);
stem(re1);
xlabel('Time period');
ylabel('Amplitude');
title('Real part of the output');
subplot(2,2,2);
stem(im1);
xlabel('Time period');
ylabel('Amplitude');
title('Imaginary part of the output');
%%dit_ifft
Function Table:(DITFFT)
function [ re, im ] = ditfft( re, im, N)
%UNTITLED5 Summary of this function goes here
% Detailed explanation goes here
N1=N-1;
N2=N/2;
j=N2+1;
M=log2(N);
% Bit reversal sorting
for i=2:N-2
if i<j
tr=re(j);
ti=im(j);
re(j)=re(i);
im(j)=im(i);
re(i)=tr;
im(i)=ti;
end
k=N2;
while k<=j
j=j-k;
k=k/2;
end
j=j+k;
j=round(j);
end
for l=1:M
le=2.^l;
le2=le/2;
ur=1;
ui=0;
sr=cos(pi/le2);
si=sin(pi/le2);
for j=2:(le2+1)
jm=j-1;
for i=jm:le:N
ip=i+le2;
tr=re(ip)*ur-im(ip)*ui;
ti=re(ip)*ui-im(ip)*ur;
re(ip)=re(i)-tr;
im(ip)=im(i)-ti;
re(i)=re(i)+tr;
im(i)=im(i)+ti;
end
tr=ur;
ur=tr*sr-ui*si;
ui=tr*si+ui*sr;
end
end
Function Table:(DITIFFT)
function [ re,im] = ditifft(re,im,N)
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
N1=N-1;
N2=N/2;
j=N2+1;
M=log2(N);
%Bit reversal sorting
for i=2:N-2
if i<j
tr=re(j);
ti=im(j);
re(j)=re(i);
im(j)=im(i);
re(i)=tr;
im(i)=ti;
end
k=N2;
while k<=j
j=j-k;
k=k/2;
end
j=j+k;
j=round(j);
end
for l=1:M
le=2.^l;
le2=le/2;
ur=1;
ui=0;
sr=cos(pi/le2);
si=-sin(pi/le2);
for j=2:(le2+1)
jm=j-1;
for i=jm:le:N
ip=i+le2;
tr=re(ip)*ur-im(ip)*ui;
ti=re(ip)*ui+im(ip)*ur;
re(ip)=re(i)-tr;
im(ip)=im(i)-ti;
re(i)=re(i)+tr;
im(i)=im(i)+ti;
end
tr=ur;
ur=tr*sr-ui*si;
ui=tr*si+ui*sr;
end
end
end
RESULT:
The DFT and IDFT of the given sequence are computed using FFT algorithm using
DITFFT.
EX.No:5
DESIGN OF FIR FILTERS
AIM:
Write a MATLAB Script to design a low pass FIR filter using Window Method for the
given specifications
. APPARATUS REQUIRED:
PC, MATLAB software
THEORY:
A digital filter is a discrete time LTI system. It is classified based on the length of the
impulse response as
IIR filters:
Where h [n] has infinite number of samples and is recursive type.
FIR filters:
They are non-recursive type and h [n] has finite number of samples.
The transfer function is of the form:
N 1
n
H (z) hn z
n0
This implies that it has (N-1) zeros located anywhere in the z-plane and (N-1) poles at Z
= h.
THE FIR FILTER CAN BE DESIGNED BY:
Fourier series method
Frequency sampling method
Window method
Most of the FIR design methods are interactive procedures and hence require more
memory and execution time. Also implementation of narrow transition band filter is costly. But
there are certain reasons to go for FIR.
TYPES OF WINDOWS:
1. Rectangular
2. Triangular
3. Hamming
4. Hanning
5. Blackman
6. Kaiser
LIBRARY FUNCTIONS:
fir1 FIR filter design using the Window method.
B = fir1(N,Wn) designs an Nth order low pass FIR digital filter and returns the filter
coefficients of vector B of length (N+1). The cut-off frequency Wn must be between 0 <
Wn < 1.0, with 1.0 corresponding to half the sample rate. The filter B is real and has
linear phase. The normalized gain of the filter at Wn is -6 dB.
B = fir1(N,Wn,'high') designs an Nth order high pass filter. You can also use
B = fir1(N,Wn,'low') to design a low pass filter.
If Wn is a two-element vector, Wn = [W1 W2], fir1 returns an order N band pass filter
with pass band W1 < W < W2.You can also specify B = fir1(N,Wn,'bandpass'). If Wn =
[W1 W2], B = fir1(N,Wn,'stop') will design a band-stop filter.
If Wn is a multi-element vector, Wn = [W1 W2 W3 W4 W5 ... WN], fir1 returns a N-
order multi-band filter with
bands 0 < W < W1, W1 < W < W2, ..., WN < W < 1.
B = fir1(N,Wn,'DC-1') makes the first band a pass band.
B = fir1(N,Wn,'DC-0') makes the first band a stop band.
B = fir1(N,Wn,WIN) designs an N-th order FIR filter using the vector WIN of (N+1)
length to window the impulse response. If empty or omitted, fir1 uses a Hamming
window of length N+1. For a complete list of available windows, see the Help for the
WINDOW function. KAISER and CHEBWIN can be specified with an optional trailing
argument. For example, B = fir1(N,Wn,kaiser(N+1,4)) uses a Kaiser window with
beta=4. B = fir1(N,Wn,'high',chebwin(N+1,R)) uses a Chebyshev window with R
decibels of relative sidelobe attenuation.For filters with a gain other than zero at Fs/2,
e.g., high pass and band stop filters, N must be even. Otherwise, N will be incremented
by one. In this case, the window length should be specified as N+2. By default, the filter
is scaled so the center of the first pass band has magnitude exactly one after
windowing. Use a trailing 'noscale' argument to prevent this scaling, e.g.
B = fir1(N,Wn,'noscale'), B = fir1(N,Wn,'high','noscale'),
B = fir1(N,Wn,wind,'noscale'). You can also specify the scaling explicitly, e.g.
fir1(N,Wn,'scale'), etc.
We can specify windows from the Signal Processing Toolbox, such as boxcar, hamming,
hanning, bartlett, blackman, kaiser or chebwin
ALGORITHM/PROCEDURE:
1. Click on the MATLAB icon on the desktop (or go to Start – All Programs and
click on MATLAB) to get into the Command Window.
2. Type ‘edit’ in the MATLAB prompt ‘>>’ that appears in the Command window.
3. Write the program in the ‘Edit’ window and save it in ‘M-file’.
4. Run the program.
5. Enter the input in the Command Window.
6. The result is displayed in the Command window and the graphical output is displayed in
the Figure Window.
Source code :1
%windows technique of Rectangular window using low pass filter
clc;
clear all;
close all;
N=input('Size of window:');
wc=input('Cut off frequency:');
h=fir1(N-1,wc/pi,boxcar(N));
tf(h,1,1,'variable','z^-1');
freqz(h);
xlabel('Frequency');
ylabel('Magnitude');
title('FIR Filter');
Source code :2
%windows technique of Triangular(Bartlet Window) using High pass filter
clc;
clear all;
close all;
N=input('Size of window:');
wc=input('Cut off frequency:');
h=fir1(N-1,wc/pi,'high',triang(N));
tf(h,1,1,'variable','z^-1');
freqz(h);
xlabel('Frequency');
ylabel('Magnitude');
title('FIR Filter');
Source code :3
%windows technique of Hamming using Band pass filter
clc;
clear all;
close all;
N=input('Size of window:');
wc1=input('Lower Cut off frequency:');
wc2=input('Upper Cut off frequency:');
wc=[wc1 wc2];
h=fir1(N-1,wc/pi,'bandpass',hamming(N));
tf(h,1,1,'variable','z^-1');
freqz(h);
xlabel('Frequency');
ylabel('Magnitude');
title('FIR Filter');
Source code :4
%windows technique of Hanning using Band stop filter
clc;
clear all;
close all;
N=input('Size of window:');
wc1=input('Lower Cut off frequency:');
wc2=input('Upper Cut off frequency:');
wc=[wc1 wc2];
h=fir1(N-1,wc/pi,'stop',hanning(N));
tf(h,1,1,'variable','z^-1');
freqz(h);
xlabel('Frequency');
ylabel('Magnitude');
title('FIR Filter');
Source code :5
%windows technique of Blackman window using low pass filter
clc;
clear all;
close all;
N=input('Size of window:');
wc=input('Cut off frequency:');
h=fir1(N-1,wc/pi,blackman(N));
tf(h,1,1,'variable','z^-1');
freqz(h);
xlabel('Frequency');
ylabel('Magnitude');
title('FIR Filter');
RESULT:
The given low pass filter was designed using Window method and manually verified
filter co-efficient of the filters.
EX.No:6 DESIGN OF BUTTERWORTH FILTERS
DATE:
AIM:
Write a MATLAB Script to design Analog Butterworth filters for the given
specifications.
APPARATUS REQUIRED:
PC, MATLAB software
THEORY:
BUTTERWORTH FILTER:
Low pass Analog Butterworth filters are all pole filters characterised by magnitude
frequency response by
2 1
H ( j ) = 2N
1
c
As N , the low pass filter is said to be normalized. All types of filters namely-Low
pass, High pass, Band pass and Band elimination filters can be derived from the Normalized
Low pass filter.
LIBRARY FUNCTIONS:
given the numerator and denominator coefficients in vectors B and A. The frequency
response is evaluated at the points specified in vector W (in rad/s). The magnitude and
phase can be graphed by calling freqs(B,A,W) with no output arguments.
%Find the order and Cutofrf frequency using the given specification of
%filter
[n,Wc]=buttord(w1,w2,k1,k2,'s');
disp('The order is:');
disp(n);
disp('The cutoff frequency is:');
disp(Wc);
f=linspace(1,512,1000);
h=freqs(b,a,f);
m=20*log(abs(h));
subplot(2,1,1);
semilogx(f,m);
xlabel('Frequency');
ylabel('Magnitude');
title('Magnitude response of Butterworth LPF');
% Phase response
p=angle(h);
subplot(2,1,2);
semilogx(f,p);
xlabel('Frequency');
ylabel('Phase');
title('Phase response of Butterworth LPF');
SOURCE CODE:2
clc;
clear all;
close all;
%% Butterworth high pass Filter
% Filter Specifications
%Find the order and Cutofrf frequency using the given specification of
%filter
[n,Wc]=buttord(w1,w2,k1,k2,'s');
disp('The order is:');
disp(n);
disp('The cutoff frequency is:');
disp(Wc);
f=linspace(1,512,1000);
h=freqs(b,a,f);
m=20*log(abs(h));
subplot(2,1,1);
semilogx(f,m);
xlabel('Frequency');
ylabel('Magnitude');
title('Magnitude response of Butterworth HPF');
% Phase response
p=angle(h);
subplot(2,1,2);
semilogx(f,p);
xlabel('Frequency');
ylabel('Phase');
title('Phase response of Butterworth HPF');
SOURCE CODE:3
clc;
clear all;
close all;
%% Bandpass Filter Specifications
Wp=input('Enter the pass band edge frequency : ');
Ws=input('Enter the stop band edge frequency : ');
Rp=input('Enter the Pass band ripple: ');
Rs=input('Enter the stop band gain: ');
SOURCE CODE:4
clc;
clear all;
close all;
%% Bandstop Filter Specifications
Wp=input('Enter the pass band edge frequency : ');
Ws=input('Enter the stop band edge frequency : ');
Rp=input('Enter the Pass band ripple: ');
Rs=input('Enter the stop band gain: ');
RESULT:
Analog Butterworth Filter is designed for the given specifications, and manually verified
the order, cut off frequency and filter co-efficient of the filter.
EX.No:7 DESIGN OF IIR FILTERS
DATE:
AIM:
Write a MATLAB Script to design Butterworth and Chebyshev low pass filters using
Bilinear Transformation
Impulse Invariant Transformation
. APPARATUS REQUIRED:
PC, MATLAB software
THEORY:
A digital filter is a linear time invariant discrete time system. The digital filters are
classified into two, based on their lengths of impulse response
1. Finite Impulse response (FIR)
They are of non-recursive type and h [n] has finite number of samples
2. Infinite Impulse response (IIR)
h[n] has finite number of samples. They are of recursive type. Hence, their
transfer function is of the form
n
H (z) h(n ) z
n0
M 1
k
bk Z
K 0
H (Z )
N 1
j
1 a jZ
j 1
The digital filters are designed from analog filters. The two widely used methods for
digitizing the analog filters include
1. Bilinear transformation
2. Impulse Invariant transformation
This transformation maps the jΩ axis (from Ω = -∞ to +∞) repeatedly around the unit circle (exp
( jw), from w=-π to π ) by
2
tan
T 2
BILINEAR TRANSFORMATION:
DESIGN STEPS:
1. From the given specifications, Find pre-warped analog frequencies using
2
tan
T 2
LIBRARY FUNCTIONS:
ALGORITHM/PROCEDURE:
1. Calculate the attenuation in dB for the given design parameters
2. Design the analog counterpart
3. Using Bilinear transformation design the digital filter
4. Display the transfer function. Plot the magnitude response and phase response
SOURCE CODE:
/ Butterworth Lowpass Bilinear Transformation Method
clc;
clear all;
close all;
warning off;
% Design of IIR Filters
%% Filter Specifications
% Input Wp,Ws,Sp,Ss,T
% T=1,both the ripple gains should have band width( .1 to .3)
disp(' Butterworth Lowpass filter using Bilnear transformation method ');
T=input('Enter the Sampling Frequency in rad/sec: ');
Sp=input('Enter the Pass-band Ripple Gain: ');
Wp=input('Enter the Pass-band Edge Frequency in rad/sec: ');
Ss=input('Enter the Stop-band Ripple Gain: ');
Ws=input('Enter the Stop-band Edge Frequency in rad/sec: ');
% Calculation of ohmp,ohms,Ap,As
Ap=abs(20*log10(1-Sp));
As=abs(20*log10(Ss));
ohmp=Wp/T;
ohms=Ws/T;
% Butterworth Filter
% Calculation of order and cutoff freq. for the above filter specs.
[n,Wc]=buttord(ohmp,ohms,Ap,As,'s');
RESULT:
Butterworth Lowpass filters were designed using Bilinear transformations, and manually verified
the order, cut off frequency and filter co-efficient of the filters
EX.No:8 SAMPLING RATE CONVERSION
DATE:
AIM:
Write a MATLAB Script to perform sampling rate conversion for any given arbitrary
sequence (D.T) or signal (C.T) by interpolation, decimation, upsampling, downsampling and
resampling (i.e. fractional value)
.
APPARATUS REQUIRED:
PC, MATLAB software
THEORY:
SAMPLING PROCESS:
It is a process by which a continuous time signal is converted into discrete time signal.
X[n] is the discrete time signal obtained by taking samples of the analog signal x(t) every T
seconds, where T is the sampling period.
X[n] = x (t) x p (t)
Where p(t) is impulse train; T – period of the train
SAMPLING THEOREM:
It states that the band limited signal x(t) having no frequency components above Fmax Hz
is specified by the samples that are taken at a uniform rate greater than 2 Fmax Hz (Nyquist rate),
or the frequency equal to twice the highest frequency of x(t).
Fs ≥ 2 Fmax
FILTER H (Z)
UPSAMPLE AND INTERPOLATION:
Upsampling by an integer factor L (L > 1) on a sequence x[n] will insert (L–1)
equidistant samples between an output sequence y[n] according to the relation
x[n/L], n = 0, 1, 2 ….
y[n] = 0, otherwise
The sampling rate of y[n] is L times that of x[n]. The unwanted images in the spectra of sampled
signal must be removed by a LPF called anti-imaging filter. The input sequence is passed
through an anti-imaging filter after up sampling.
ALGORITHM/PROCEDURE:
1. Generate a sinusoidal waveform
2. Using the appropriate library function for interpolation ,decimation ,upsampling ,
downsampling and resampling, perform sampling rate conversion for the sinusoidal
waveform
3. Find the spectrum of all the signals and compare them in frequency domain.
4. Display the resultant waveforms
Source code :
clc;
clear all;
close all;
%continuous sinusoidal signal
a=input('Enter the amplitude:');
f=input('Enter the Timeperiod:');
t=-10:1:20;
x=a*sin(2*pi*f*t);
subplot(2,3,1);
plot(t,x);
xlabel('time');
ylabel('Amplitude');
title('Sinusoidal signal');
%decimating the signal
d=input('Enter the value by which the signal is to be decimated:');
y1=decimate(x,d);
subplot(2,3,2);
stem(y1);
xlabel('time');
ylabel('Amplitude');
title('Decimated signal');
%interpolating the signal
i=input('Enter the value by which the signal is to be interpolated:');
y2=interp(x,i);
subplot(2,3,3);
stem(y2);
xlabel('time');
ylabel('Amplitude');
title('Interpolated signal');
%resampling the signal
y3=resample(x,3,2);
subplot(2,3,4);
stem(y3);
xlabel('time');
ylabel('Amplitude');
title('Resampled signal');
%downsampling the signal
y4=downsample(x,2);
subplot(2,3,5);
stem(y4);
xlabel('time');
ylabel('Amplitude');
title('Downsampled signal');
%upsampling the signal
y5=upsample(x,3);
subplot(2,3,6);
stem(y5);
xlabel('time');
ylabel('Amplitude');
title('Upsampled signal');
RESULT:
The program written using library functions and the sampling rate conversion process is
studied.
POWER SPECTRUM ESTIMATION USING
EX.No:9
PERIODOGRAM
DATE:
AIM:
Write a MATLAB Script to perform Power spectrum estimation using periodogram
APPARATUS REQUIRED:
PC, MATLAB software
THEORY:
Source code:
%Power spectrum estimate using Periodogram
n=inpue(‘Enter the length of the sequence’);
window=hamming(n);
nfft=input(‘Length of the FFT’);
fs=input(‘Sampling frequency’);
x=cos(2*0.1*pi*n/fs)+sin(2*4*pi*n/fs)+0.01*randn(size(n));
subplot(2,1,1),plot(n,x);
xlabel(‘n’),ylabel(‘x(n)’);
[pxx,f]=peridogram(x,window,nfft,fs);
Subplot(2,1,2);
Plot(f/fs,10*log10(pxx));grid;
Xlabel(‘\omega/\pi’),ylabel(‘Power spectrum’);