experiment no. 1mist.ac.in/pdfs/labmanuals/ece/dsplabmanual.pdf · digital signal processing lab...
TRANSCRIPT
Digital signal processing Lab Manual
DEPARTMENT OF ECE
1
EXPERIMENT No. 1
Generation of Sinusoidal waveform/ Signal based on recursive difference equations
%program to generate sinusoidal signals with different amplitudes
title('sine waves');
t=0:.5:2*pi;
y=sin(t)
y1=5*sin(t)
y2=10*sin(t)
y3=15*sin(t)
subplot(4,2,1);
plot(y);
xlabel('time');
ylabel('amplitude');
subplot(4,2,2);
stem(y)
xlabel('n---->');
ylabel('amplitude');
subplot(4,2,3);
plot(y1);
xlabel('time');
ylabel('amplitude');
subplot(4,2,4);
stem(y1)
xlabel('n---->');
ylabel('amplitude');
subplot(4,2,5);
plot(y2);
xlabel('time');
ylabel('amplitude');
subplot(4,2,6);
stem(y2)
xlabel('n--->');
ylabel('amplitude');
subplot(4,2,7);
plot(y3);
xlabel('time');
ylabel('amplitude');
subplot(4,2,8);
stem(y3)
xlabel('n-->');
ylabel('amplitude');
Digital signal processing Lab Manual
DEPARTMENT OF ECE
2
RESULT:
%program to generate sum of sine sequences
title('sum of sin waves');
t=0:.5:2*pi;
x=sin(t);
subplot(4,2,1);
stem(x);
xlabel('n---->');
ylabel('amplitude');
title('sin wave');
subplot(4,2,2);
plot(x);
xlabel('n---->');
ylabel('amplitude');
title('sin wave');
y1=sin(t)+5*sin(2*t);
subplot(4,2,3);
stem(y1);
xlabel('n---->');
ylabel('amplitude');
title('sin wave with harmonic');
subplot(4,2,4);
plot(y1);
xlabel('n---->');
ylabel('amplitude');
title('sin wave with harmonic');
Digital signal processing Lab Manual
DEPARTMENT OF ECE
3
y2=sin(t)+5*sin(2*t)+10*sin(3*t);
subplot(4,2,5);
stem(y2);
xlabel('n---->');
ylabel('amplitude');
title('sin wave with two harmonics');
subplot(4,2,6);
plot(y2);
xlabel('n---->');
ylabel('amplitude');
title('sin wave with two harmonics');
y3=sin(t)+5*sin(2*t)+10*sin(3*t)+15*sin(4*t);
subplot(4,2,7);
stem(y3);
xlabel('n---->');
ylabel('amplitude');
title('sin wave with three harmonics');
subplot(4,2,8);
plot(y3);
xlabel('n---->');
ylabel('amplitude');
title('sin wave with three harmonics');
RESULT:-
Digital signal processing Lab Manual
DEPARTMENT OF ECE
4
VIVA QUESTIONS
1.what is the difference between sin & cos signals?
2.What is meant by signal?
3. What is the difference between time domain & frequency domain signal?
4. What is the difference between periodic & a periodic signal.
5. What is the difference between orthogonal and orthonormal signals?
6. What is the need for Fourier series & Fourier transform?
7. What is the difference between discrete & digital signals?
8. What is the difference between even signal & odd signal?
9. What is the difference between power signal & energy signal?
Digital signal processing Lab Manual
DEPARTMENT OF ECE
5
EXPERIMENT No. 2
To find DFT/IDFT of a given sequence
%program to generate DFT of a given sequence
clc;
clear all;
close all;
x=input('enter sequence');
L=length(x);
for i=1:L
s=0;
for k=1:L
s=s+x(k).*exp(-j*2*pi*(i-1)*(k-1)/L);
end;
c(i)=s;
a=abs(c)
end;
display(c);
RESULT
enter sequence[1,2,3]
>> c
c
6.0000 -1.5000 + 0.8660i -1.5000 - 0.8660i
>> fft(x)
ans =
-1.5000 + 0.8660i -1.5000 - 0.8660i
Digital signal processing Lab Manual
DEPARTMENT OF ECE
6
%program to generate IDFT of a given sequence
clc;
clear all;
close all;
x=input('enter sequence');
L=length(x);
for i=1:L
s=0;
for k=1:L
s=s+x(k).*exp(j*2*pi*(i-1)*(k-1)/L);
end;
c(i)=s/L;
end;
display(c);
RESULT:
enter sequence[1,2,3]
>> c
c =
2.0000 -0.5000 - 0.2887i -0.5000 + 0.2887i
Digital signal processing Lab Manual
DEPARTMENT OF ECE
7
VIVA QUESTIONS
1. How many multiplication and additions are required to compute N point DFT using
radix 2 FFT?
2. Define DTFT pair.
3. What are Twiddle factors of the DFT?
4. State Periodicity Property of DFT.
5. What is the difference between DFT and DTFT?
6. Why need of FFT?
7. Find the IDFT of Y (k) = (1, 0, 1, 0)
8. Compute the Fourier transform of the signal x(n) = u(n) – u(n-1).
9. Compare DIT and DIF?
10. What is meant by in place in DIT and DIF algorithm?
11. Is the DFT of a finite length sequence is periodic? If so, state the reason.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
8
EXPERIMENT No. 3 To find frequency response of a given system given in (transfer function/difference form)
y(n)-1/12y(n-1)-1/12y(n-2)=x(n)
%program to generate frequency response of a given difference equation
clc;
clear all;
close all;
b=[12 0 0];
a=[12 -1 -1];
zplane(b,a);
figure;
w=0:0.1:pi;
[h,w]=freqz(b,a,w);
m=20*log(abs(h));
subplot(121);
plot(w/pi,m);
xlabel('freq');
ylabel('magnitude');
title('magnitude of transfer function');
p=(angle(h)*180/pi);
subplot(122);
plot(w/pi,p);
xlabel('freq');
ylabel('phase');
title('phase of transfer function');
RESULT:
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
2
Real Part
Imag
inar
y Pa
rt
Digital signal processing Lab Manual
DEPARTMENT OF ECE
9
0 0.5 1-2
-1
0
1
2
3
4
freq
magnitude
magnitude of transfer function
0 0.5 1-10
-8
-6
-4
-2
0
2
freq
phase
phase of transfer function
B=[1 0 0.9], A=[1 0 0.4]
%program to generate frequency response of a given transfer function
clc;
clear all;
close all;
b=[1 0 0.9];
a=[1 0 0.4];
zplane(b,a);
figure;
w=0:0.1:pi;
[h,w]=freqz(b,a,w);
m=20*log(abs(h));
subplot(121);
plot(w/pi,m);
xlabel('freq');
ylabel('magnitude');
title('magnitude of transfer function');
p=(angle(h)*180/pi);
subplot(122);
plot(w/pi,p);
xlabel('freq');
ylabel('phase');
title('phase of transfer function');
Digital signal processing Lab Manual
DEPARTMENT OF ECE
10
RESULT:
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Real Part
Imag
inar
y P
art
0 0.5 1-35
-30
-25
-20
-15
-10
-5
0
5
10
freq
mag
nitu
de
magnitude of transfer function
0 0.5 1-60
-40
-20
0
20
40
60
freq
phas
e
phase of transfer function
VIVA QUESTIONS
1. What is mean by difference equation?
2. what is the difference between recursive and non recursive difference equation.
3. What is transfer function.
4. How to calculate magnitude in decibels.
5. How to calculate frequency response in MATLAB.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
11
EXPERIMENT No. 4
Implementation of FFT /IFFT of a sequence
%program to generate FFT of a given sequence
clc;
clear all;
close all;
x=input('enter input sequence');
n=input('enter the order');
y=fft(x,n);
display(abs(y));
subplot(1,2,1);
stem(x);
xlabel('n');
ylabel('magnitude');
title('plot of input sequences');
subplot(1,2,2);
stem(abs(y));
xlabel('n');
ylabel('magnitude');
title('plot of output fft');
Input:
enter input sequence[1 2 3 4]
enter the order: 8
Output:
ans =
Columns 1 through 6
10.0000 7.2545 2.8284 2.7153 2.0000 2.7153
Columns 7 through 8
2.8284 7.2545
Digital signal processing Lab Manual
DEPARTMENT OF ECE
12
Expected graph:
1 2 3 40
0.5
1
1.5
2
2.5
3
3.5
4
n
mag
nitu
de
plot of input sequences
0 2 4 6 80
1
2
3
4
5
6
7
8
9
10
n
mag
nitu
de
plot of output fft
%program to generate IFFT of a given sequence
clc;
clear all;
close all;
x=input('enter input sequence');
n=input('enter the order');
y=ifft(x,n);
display(abs(y));
subplot(1,2,1);
stem(x);
xlabel('n');
ylabel('magnitude');
title('plot of input sequences');
subplot(1,2,2);
stem(abs(y));
xlabel('n');
ylabel('magnitude');
title('plot of output ifft');
Input:
enter input sequence[10.0000 7.2545 2.8284 2.7153 2.0000 2.7153 2.8284 7.2545]
enter the order: 8
Output:
ans =
Digital signal processing Lab Manual
DEPARTMENT OF ECE
13
Columns 1 through 6
37.5964 14.4194 6.3432 1.5806 2.2828 1.5806
Columns 7 through 8
6.3432 14.4194
Expected graph:
0 2 4 6 80
1
2
3
4
5
6
7
8
9
10
n
mag
nitu
de
plot of input sequences
0 2 4 6 80
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
n
mag
nitu
deplot of output ifft
VIVA QUESTIONS
1. What is meant by radix 2 FFT?
2 . State the properties of W N(k) ?
3. What is bit reversal in FFT?
4. Determine the no of bits required in computing the DFT of a 1024 point sequence
with SNR of 30dB.
5. What is the use of Fourier transform?
6. What are the advantages FFT over DFT?
Digital signal processing Lab Manual
DEPARTMENT OF ECE
14
EXPERIMENT No. 5
Determination of Power Spectrum of a given sequence
Consider the input signal x(n) of length N in matrix form and the correlated signal is denoted as
y(n).
y(n) is given by the formula.
y(n) =
k
nkxkx )()(
where n = - (N-1) to (N-1)
Now the PSD = FFT ( Auto-correlation function y(n) ).
%program for auto & psd
clc;
clear all;
close all;
x=input('enter the sequence');
y=xcorr(x,x);
subplot(3,1,1);
stem(x);
ylabel('Amplitude--->');
xlabel(' n----->');
title('input seq');
subplot(3,1,2);
stem(y);
ylabel('Amplitude----.');
xlabel('n---->');
title('autocorr seq for input');
disp('autocorr seq for input');
N=4;
p=fft(y,N);
ylabel('Amplitude--->');
xlabel('K----->');
title('psd of input');
subplot(3,1,3);
stem(p);
disp('the psd fun');
Input:
Input sequence : [1,1.5,2,2.5,3,3.5,4]
Output:
Digital signal processing Lab Manual
DEPARTMENT OF ECE
15
VIVA QUESTIONS
1. How to calculate PSD.
2. What is PSD.
3. What is the relation between PSD and auto correlation function.
4. What is the definition for energy and power?
Digital signal processing Lab Manual
DEPARTMENT OF ECE
16
EXPERIMENT No. 6
Implementation of LP FIR filer for a given sequence
%program to implement LP FIR filter for a given sequence using Rectangular Window
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
fp=input('Enter the pass band frequency');
fs=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
wp=2*fp/f;
ws=2*fs/f;
num=-20*log10(sqrt(rp*rs));
dem=14.6*(fs-fp)/f;
n=ceil(num/dem);
n1=n+1;
if(rem(n,2)~=0)
n1=n;
n=n-1;
end
y=boxcar(n1);
b=fir1(n,wp,y);
[h,om]=freqz(b,1,256);
m=20*log10(abs(h));
subplot(2,1,1);
plot(om/pi,m);
xlabel('frequency');
ylabel('gain’);
title('Rectangular window for Low pass filter magnitude response');
an=angle(h);
subplot(2,1,2);
plot(om/pi,an);
xlabel('frequency');
ylabel('phase’);
title('Rectangular window for Low pass filter phase response');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
17
Expected graph
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100
-50
0
50
frequency
magnitude
Rectangular window for Low pass filter magnitude response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4
-2
0
2
4
frequency
phase
Rectangular window for Low pass filter phase response
%program to implement LP FIR filter for a given sequence using Triangular Window
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
fp=input('Enter the pass band frequency');
fs=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
wp=2*fp/f;
ws=2*fs/f;
num=-20*log10(sqrt(rp*rs));
dem=14.6*(fs-fp)/f;
n=ceil(num/dem);
n1=n+1;
if(rem(n,2)~=0)
n1=n;
n=n-1;
end
y=triang(n1);
b=fir1(n,wp,y);
[h,om]=freqz(b,1,256);
m=20*log10(abs(h));
Digital signal processing Lab Manual
DEPARTMENT OF ECE
18
subplot(2,1,1);
plot(om/pi,m);
xlabel('frequency');
ylabel('gain');
title('Triangular window for low pass filter magnitude response');
an=angle(h);
subplot(2,1,2);
plot(om/pi,an);
xlabel('frequency');
ylabel('phase’);
title('Triangular window for Low pass filter phase response');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-40
-20
0
20
frequency
gain
Triangular window for low pass filter magnitude response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4
-2
0
2
4
frequency
phase
Triangular window for Low pass filter phase response
Digital signal processing Lab Manual
DEPARTMENT OF ECE
19
%program to implement LP FIR filter for a given sequence using Kaiser Window
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
fp=input('Enter the pass band frequency');
fs=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
wp=2*fp/f;
ws=2*fs/f;
num=-20*log10(sqrt(rp*rs));
dem=14.6*(fs-fp)/f;
n=ceil(num/dem);
n1=n+1;
if(rem(n,2)~=0)
n1=n;
n=n-1;
end
y=kaiser(n1);
b=fir1(n,wp,,y);
[h,om]=freqz(b,1,256);
m=20*log10(abs(h));
subplot(2,1,1);
plot(om/pi,m);
xlabel('frequency');
ylabel('gain');
title('Kaiser window for low pass filter magnitude response');
an=angle(h);
subplot(2,1,2);
plot(om/pi,an);
xlabel('frequency');
ylabel('phase’);
title('Kaiser window for Low pass filter phase response');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
20
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100
-50
0
50
frequency
gain
Kaiser window for low pass filter magnitude response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4
-2
0
2
4
frequency
phase
Kaiser window for Low pass filter phase response
Digital signal processing Lab Manual
DEPARTMENT OF ECE
21
EXPERIMENT No. 7
Implementation of HP FIR filer for a given sequence
%program to implement HP FIR filter for a given sequence using Rectangular Window
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
fp=input('Enter the pass band frequency');
fs=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
wp=2*fp/f;
ws=2*fs/f;
num=-20*log10(sqrt(rp*rs));
dem=14.6*(fs-fp)/f;
n=ceil(num/dem);
n1=n+1;
if(rem(n,2)~=0)
n1=n;
n=n-1;
end
y=boxcar(n1);
b=fir1(n,wp,'high',y);
[h,om]=freqz(b,1,256);
m=20*log10(abs(h));
subplot(2,1,1);
plot(om/pi,m);
xlabel('frequency');
ylabel('gain’);
title('Rectangular window for High pass filter magnitude response');
an=angle(h);
subplot(2,1,2);
plot(om/pi,an);
xlabel('frequency');
ylabel('phase’);
title('Rectangular window for High pass filter phase response');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
22
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100
-50
0
50
frequency
gain
Rectangular window for High pass filter magnitude response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4
-2
0
2
4
frequency
phase
Rectangular window for High pass filter phase response
%program to implement HP FIR filter for a given sequence using Triangular Window
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
fp=input('Enter the pass band frequency');
fs=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
wp=2*fp/f;
ws=2*fs/f;
num=-20*log10(sqrt(rp*rs));
dem=14.6*(fs-fp)/f;
n=ceil(num/dem);
n1=n+1;
if(rem(n,2)~=0)
n1=n;
n=n-1;
end
y=triang(n1);
b=fir1(n,wp,'high',y);
[h,om]=freqz(b,1,256);
Digital signal processing Lab Manual
DEPARTMENT OF ECE
23
m=20*log10(abs(h));
subplot(2,1,1);
plot(om/pi,m);
xlabel('frequency');
ylabel('gain');
title('Triangular window for High pass filter magnitude response');
an=angle(h);
subplot(2,1,2);
plot(om/pi,an);
xlabel('frequency');
ylabel('phase’);
title('Triangular window for High pass filter phase response');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-30
-20
-10
0
10
frequency
gain
Triangular window for High pass filter magnitude response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4
-2
0
2
4
frequency
phase
Triangular window for High pass filter phase response
Digital signal processing Lab Manual
DEPARTMENT OF ECE
24
%program to implement HP FIR filter for a given sequence using Kaiser Window
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
fp=input('Enter the pass band frequency');
fs=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
wp=2*fp/f;
ws=2*fs/f;
num=-20*log10(sqrt(rp*rs));
dem=14.6*(fs-fp)/f;
n=ceil(num/dem);
n1=n+1;
if(rem(n,2)~=0)
n1=n;
n=n-1;
end
y=kaiser(n1,1);
b=fir1(n,wp,'high',y);
[h,om]=freqz(b,1,256);
m=20*log10(abs(h));
subplot(2,1,1);
plot(om/pi,m);
xlabel('frequency');
ylabel('gain');
title('Kaiser window for High pass filter magnitude response');
an=angle(h);
subplot(2,1,2);
plot(om/pi,an);
xlabel('frequency');
ylabel('phase’);
title('Kaiser window for High pass filter phase response');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
25
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100
-50
0
50
frequency
gain
Kaiser window for High pass filter magnitude response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4
-2
0
2
4
frequency
phase
Kaiser window for High pass filter phase response
VIVA QUESTIONS
1. What is FIR
2. What is the difference between FIR and IIR.
3. What is the equation for FIR.
4. Is FIR is stable.
5. Is FIR recursive.
6. What are the different windowing techniques used in FIR.
7. What is the need of Windowing techniques.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
26
EXPERIMENT No. 8
Implementation of LP IIR filer for a given sequence
%program to implement LP IIR filter for a given sequence using Butterworth filter
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
wp=input('Enter the pass band frequency');
ws=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
w1=wp/f;
w2=ws/f;
[n,wn]=buttord(w1,w2,rp,rs);
[b,a]=butter(n,wn);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain');
xlabel('normal frequency');
subplot(2,1,2);
plot(om/pi,an);
ylabel('phase');
xlabel('normal frequency');
title('Butterworth LP IIR filter');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
27
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-80
-60
-40
-20
0
gain
normal frequency
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-2
-1.5
-1
-0.5
0
phase
normal frequency
Butterworth LP IIR filter
Digital signal processing Lab Manual
DEPARTMENT OF ECE
28
%program to implement LP IIR filter for a given sequence using Chebyshev filter
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
wp=input('Enter the pass band frequency');
ws=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
w1=2*wp/f;
w2=2*ws/f;
[n,wn]=cheb1ord(w1,w2,rp,rs);
[b,a]=cheby1(n,rp,wn);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain');
xlabel('normal frequency');
subplot(2,1,2);
plot(om/pi,an);
ylabel('phase');
xlabel('normal frequency');
title(Chebyshev LP IIR filter');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
29
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-80
-60
-40
-20
0
gain
normal frequency
Chebyshev LP IIR filter
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-2
-1.5
-1
-0.5
0
phase
normal frequency
Chebyshev LP IIR filter
Digital signal processing Lab Manual
DEPARTMENT OF ECE
30
EXPERIMENT No. 9
Implementation of HP IIR filer for a given sequence
%program to implement HP IIR filter for a given sequence using Butterworth filter
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
wp=input('Enter the pass band frequency');
ws=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
w1=wp/f;
w2=ws/f;
[n,wn]=buttord(w1,w2,rp,rs);
[b,a]=butter(n,wn,'high');
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain');
xlabel('normal frequency');
subplot(2,1,2);
plot(om/pi,an);
ylabel('phase');
xlabel('normal frequency');
title('Butterworth IIR HP filter');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56 Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
31
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-60
-40
-20
0
gain
normal frequency
Butterworth IIR HP filter
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.5
1
1.5
2
phase
normal frequency
Butterworth IIR HP filter
%program to implement HP IIR filter for a given sequence using Chebyshev filter
clc;
clear all;
close all;
rp=input('Enter the pass band ripple');
rs=input('Enter the stop band ripple');
wp=input('Enter the pass band frequency');
ws=input('Enter the stop band frequency');
f=input('Enter the sampling frequency');
w1=2*wp/f;
w2=2*ws/f;
[n,wn]=cheb1ord(w1,w2,rp,rs);
[b,a]=cheby1(n,rp,wn,'high');
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain');
xlabel('normal frequency');
subplot(2,1,2);
Digital signal processing Lab Manual
DEPARTMENT OF ECE
32
plot(om/pi,an);
ylabel('phase');
xlabel('normal frequency');
title('frequency response of hpf filter');
Input:
Enter the pass band ripple: 0.45
Enter the stop band ripple: 0.56
Enter the pass band frequency: 125
Enter the stop band frequency: 150.
Enter the sampling frequency: 1000
Expected graph:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-30
-20
-10
0
gain
normal frequency
frequency response of hpf filter
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.5
1
1.5
2
phase
normal frequency
frequency response of hpf filter
VIVA QUESTIONS
1. What is IIR
2. What is the difference between FIR and IIR.
3. What is the equation for IIR.
4. Is IIR is stable.
5. Is IIR recursive.
6. What are the different filtering techniques used in IIR.
7. What is the need of filtering techniques.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
33
EXPERIMENT No: 10
Generation of DTMF signals
clc;
d = input('Type in the telephone digit = ', 's');
symbol = abs(d);
tm = [49 50 51 65;52 53 54 66;55 56 57 67;42 48 35 68];
for p = 1:4;
for q = 1:4;
if tm(p,q) == abs(d);break,end
end
if tm(p,q) == abs(d);break,end
end
f1 = [697 770 852 941];
f2 = [1209 1336 1477 1633];
n = 0:204;
x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);
k = [18 20 22 24 31 34 38 42];
val = zeros(1,8);
for m = 1:8;
Fx(m) = goertzel(x,k(m)+1);
end
val = abs(Fx);
stem(k,val);grid; xlabel('k');ylabel('|X[k]|');
limit = 80;
for s = 5:8;
if val(s) > limit,break,end
end
for r = 1:4;
if val(r) > limit,break,end
end
disp(['Touch-Tone Symbol = ',setstr(tm(r,s-4))])
Input:
Type in the telephone digit = 4
Touch-Tone Symbol = 4
Digital signal processing Lab Manual
DEPARTMENT OF ECE
34
15 20 25 30 35 40 450
20
40
60
80
100
120
k
|X[k
]|
VIVA QUESTIONS
1. What is DTMF
2. Where it is used.
3. why it is used in DSP.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
35
EXPERIMENT No:11
Implementation of Decimation process
% Illustration of Decimation Process
clc;
M = input('Down-sampling factor = ');
n = 0:99;
x = sin(2*pi*0.043*n) + sin(2*pi*0.031*n);
y = decimate(x,M,'fir');
subplot(2,1,1);
stem(n,x(1:100));
title('Input Sequence');
xlabel('Time index n');ylabel('Amplitude');
subplot(2,1,2);
m = 0:(100/M)-1;
stem(m,y(1:100/M));
title('Output Sequence');
xlabel('Time index n');
ylabel('Amplitude');
Input:
Down-sampling factor = 4
Expected graph:
0 10 20 30 40 50 60 70 80 90 100-2
-1
0
1
2Input Sequence
Time index n
Am
plitu
de
0 5 10 15 20 25-2
-1
0
1
2Output Sequence
Time index n
Am
plitu
de
Digital signal processing Lab Manual
DEPARTMENT OF ECE
36
EXPERIMENT No: 12
Implementation of Interpolation process
% Illustration of Interpolation Process
clc;
L = input('Up-sampling factor = ');
% Generate the input sequence
n = 0:49;
x = sin(2*pi*0.043*n) + sin(2*pi*0.031*n);
% Generate the interpolated output sequence
y = interp(x,L);
% Plot the input and the output sequences
subplot(2,1,1);
stem(n,x(1:50));
title('Input Sequence');
xlabel('Time index n'); ylabel('Amplitude');
subplot(2,1,2);
m = 0:(50*L)-1;
stem(m,y(1:50*L));
title('Output Sequence');
xlabel('Time index n'); ylabel('Amplitude');
Input:
Up-sampling factor = 2
Expected graph:
0 5 10 15 20 25 30 35 40 45 50-2
-1
0
1
2Input Sequence
Time index n
Am
plitu
de
0 10 20 30 40 50 60 70 80 90 100-2
-1
0
1
2Output Sequence
Time index n
Am
plitu
de
Digital signal processing Lab Manual
DEPARTMENT OF ECE
37
EXPERIMENT No: 13
Implementation of I/D sampling rate converters
% Illustration of Sampling Rate Alteration by a Ratio of Two Integers
clc;
L = input('Up-sampling factor = ');
M = input('Down-sampling factor = ');
n = 0:29;
x = sin(2*pi*0.43*n) + sin(2*pi*0.31*n);
y = resample(x,L,M);
subplot(2,1,1);
stem(n,x(1:30));axis([0 29 -2.2 2.2]);
title('Input Sequence');
xlabel('Time index n');
ylabel('Amplitude');
subplot(2,1,2);
m = 0:(30*L/M)-1;
stem(m,y(1:30*L/M));
axis([0 (30*L/M)-1 -2.2 2.2]);
title('Output Sequence');
xlabel('Time index n');
ylabel('Amplitude');
Input:
Up-sampling factor = 3, Down-sampling factor = 2
Expected graph:
0 5 10 15 20 25
-2
-1
0
1
2
Input Sequence
Time index n
Ampl
itude
0 5 10 15 20 25 30 35 40
-2
-1
0
1
2
Output Sequence
Time index n
Ampl
itude
Digital signal processing Lab Manual
DEPARTMENT OF ECE
38
VIVA QUESTIONS
1. What is decimation .
2. What is interpolation
3. What is I/D
4. What is know to be subband coding
5. Define sampling rate conversion
6. How the image enchancement is achieved using DSP
7. Define compression
8. What are various compression technique
9. Explain subband coding
Digital signal processing Lab Manual
DEPARTMENT OF ECE
39
INTRODUCTION TO CODE COMPOSER STUDIO
Code Composer is the DSP industry's first fully integrated development environment (IDE)
with DSP-specific functionality. With a familiar environment liked MS-based C++TM, Code
Composer lets you edit, build, debug, profile and manage projects from a single unified environment.
Other unique features include graphical signal analysis, injection/extraction of data signals via file
I/O, multi-processor debugging, automated testing and customization via a C-interpretive scripting
language and much more.
CODE COMPOSER FEATURES INCLUDE:
IDE
Debug IDE
Advanced watch windows
Integrated editor
File I/O, Probe Points, and graphical algorithm scope probes
Advanced graphical signal analysis
Interactive profiling
Automated testing and customization via scripting
Visual project management system
Compile in the background while editing and debugging
Multi-processor debugging Help on the target DSP
TMS320C6713 DSP FEATURES
Highest-Performance Floating-Point Digital Signal Processor (DSP):
Eight 32-Bit Instructions/Cycle
32/64-Bit Data Word
300-, 225-, 200-MHz (GDP), and 225-, 200-, 167-MHz (PYP) Clock Rates
3.3-, 4.4-, 5-, 6-Instruction Cycle Times
2400/1800, 1800/1350, 1600/1200, and 1336/1000 MIPS /MFLOPS
Rich Peripheral Set, Optimized for Audio
Highly Optimized C/C++ Compiler
Extended Temperature Devices Available
Advanced Very Long Instruction Word (VLIW) TMS320C67x™ DSP Core
Eight Independent Functional Units:
Two ALUs (Fixed-Point)
Four ALUs (Floating- and Fixed-Point)
Two Multipliers (Floating- and Fixed-Point)
Load-Store Architecture With 32 32-Bit General-Purpose Registers
Instruction Packing Reduces Code Size
Digital signal processing Lab Manual
DEPARTMENT OF ECE
40
All Instructions Conditional
Instruction Set Features
Native Instructions for IEEE 754
Single- and Double-Precision
Byte-Addressable (8-, 16-, 32-Bit Data)
8-Bit Overflow Protection
Saturation; Bit-Field Extract, Set, Clear; Bit-Counting; Normalization
L1/L2 Memory Architecture
4K-Byte L1P Program Cache (Direct-Mapped)
4K-Byte L1D Data Cache (2-Way)
256K-Byte L2 Memory Total: 64K-Byte L2 Unified Cache/Mapped RAM, and 192K-Byte
Additional L2 Mapped RAM
Device Configuration
Boot Mode: HPI, 8-, 16-, 32-Bit ROM Boot
Endianness: Little Endian, Big Endian
32-Bit External Memory Interface (EMIF)
Glueless Interface to SRAM, EPROM, Flash, SBSRAM, and SDRAM
512M-Byte Total Addressable External Memory Space
Enhanced Direct-Memory-Access (EDMA) Controller (16 Independent Channels)
16-Bit Host-Port Interface (HPI)
Two Multichannel Audio Serial Ports (McASPs)
Two Independent Clock Zones Each (1 TX and 1 RX)
Eight Serial Data Pins Per Port:
Individually Assignable to any of the Clock Zones
Each Clock Zone Includes:
Programmable Clock Generator
Programmable Frame Sync Generator
TDM Streams From 2-32 Time Slots
Support for Slot Size:
8, 12, 16, 20, 24, 28, 32 Bits
Data Formatter for Bit Manipulation
Wide Variety of I2S and Similar Bit Stream Formats
Integrated Digital Audio Interface Transmitter (DIT) Supports:
S/PDIF, IEC60958-1, AES-3, CP-430 Formats
Up to 16 transmit pins
Enhanced Channel Status/User Data
Extensive Error Checking and Recovery
Two Inter-Integrated Circuit Bus (I2C Bus™) Multi-Master and Slave Interfaces
Two Multichannel Buffered Serial Ports:
Serial-Peripheral-Interface (SPI)
High-Speed TDM Interface
AC97 Interface
Two 32-Bit General-Purpose Timers
Dedicated GPIO Module With 16 pins (External Interrupt Capable)
Flexible Phase-Locked-Loop (PLL) Based Clock Generator Module
IEEE-1149.1 (JTAG ) Boundary-Scan-Compatible
Package Options:
208-Pin PowerPAD™ Plastic (Low-Profile) Quad Flatpack (PYP)
272-BGA Packages (GDP and ZDP)
Digital signal processing Lab Manual
DEPARTMENT OF ECE
41
0.13-µm/6-Level Copper Metal Process
CMOS Technology
3.3-V I/Os, 1.2 -V Internal (GDP & PYP)
3.3-V I/Os, 1.4-V Internal (GDP)(300 MHz only)
TMS320C6713 DSK Overview Block Diagram
Digital signal processing Lab Manual
DEPARTMENT OF ECE
42
EXPERIMENT No. 1
AIM:
To verify the linear convolution operation Using DSK Code composer studio
EQUIPMENTS NEEDED:
Host (PC) with windows (95/98/Me/XP/NT/2000).
TMS320C6713 DSP Starter Kit (DSK).
INTRODUCTION:
Linear Convolution involves the following operations.
Folding
Multiplication
Addition
Shifting
These operations can be represented by a Mathematical Expression as follows:
x[ ]= Input signal Samples
h[ ]= Impulse response co-efficient.
y[ ]= Convolution output.
n = No. of Input samples
h = No. of Impulse response co-efficient.
Eg: x[n] = {1, 2, 3, 4}
h[k] = {1, 2, 3, 4}
Where: n=4, k=4. ;Values of n & k should be a multiple of 4.
If n & k are not multiples of 4, pad with zero’s to make
multiples of 4
r= n+k-1 ; Size of output sequence.
= 4+4-1
= 7.
r= 0 1 2 3 4 5 6
n= 0 x[0]h[0] x[0]h[1] x[0]h[2] x[0]h[3]
1 x[1]h[0] x[1]h[1] x[1]h[2] x[1]h[3]
2 x[2]h[0] x[2]h[1] x[2]h[2] x[2]h[3]
3 x[3]h[0] x[3]h[1] x[3]h[2] x[3]h[3]
Digital signal processing Lab Manual
DEPARTMENT OF ECE
43
Output: y[r] = { 1, 4, 10, 20, 25, 24, 16}.
NOTE: At the end of input sequences pad ‘n’ and ‘k’ no. of zero’s
PROCEDURE:
Open Code Composer Studio, make sure the DSP kit is turned on.
Start a new project using ‘Project-new ‘ pull down menu, save it in a
separate directory(c:\ti\myprojects) with name lconv.pjt.
Add the source files conv.asm.
to the project using ‘Projectadd files to project’ pull down menu.
Add the linker command file hello.cmd.
(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)
Add the run time support library file rts6700.lib.
(Path: c:\ti\c6000\cgtools\lib\rts6700.lib)
Compile the program using the ‘Project-compile’ pull down menu or by
clicking the shortcut icon on the left side of program window.
Build the program using the ‘Project-Build’ pull down menu or by
clicking the shortcut icon on the left side of program window.
Load the program (lconv.out) in program memory of DSP chip using the
‘File-load program’ pull down menu.
To View output graphically
Select view graph time and frequency.
PROGRAMMING FOR LINEAR CONVOLUTION IN ‘C’ LANGUAGE:
#include<stdio.h>
main()
{ int m=4; /*Lenght of i/p samples sequence*/
int n=4; /*Lenght of impulse response Co-efficients */
int i=0,j;
int x[10]={1,2,3,4,0,0,0,0}; /*Input Signal Samples*/
int h[10]={1,2,3,4,0,0,0,0}; /*Impulse Response Co-efficients*/
/*At the end of input sequences pad ‘M’ and ‘N’ no. of zero’s*/
int y[10];
for(i=0;i<m+n-1;i++)
{
y[i]=0;
for(j=0;j<=i;j++)
y[i]+=x[j]*h[i-j];
Digital signal processing Lab Manual
DEPARTMENT OF ECE
44
}
for(i=0;i<m+n-1;i++)
printf("%d\n",y[i]);
}
RESULT:
Configure the graphical window as shown below
INPUT
x[n] = {1, 2, 3, 4,0,0,0,0}
h[k] = {1, 2, 3, 4,0,0,0,0}
OUTPUT:
Note:
To execute the above program follow “ procedure to work on code composer studio”
To view graphical output follow the above procedure.
QUESTIONS
1. What is the requirement for convolution?.
2. What is the difference between convolution & correlation?
3. What is meant by impulse response?
4. Is it possible to represent any discrete time signal in terms of impulses? If yes,
represent by using example.
5. Draw the h(2n-k) & h(n-2k) for the following sequence
h(n) = { 4 3 2 1} assume (i) k= 3 (ii) k =5.
6. Write the expressions for LTI system convolution formula & causal LTI system
convolution formula.
7. What us the length of linear convolution if length of input & impulse responses
are N1 & N2 respectively?
Digital signal processing Lab Manual
DEPARTMENT OF ECE
45
EXPERIMENT No. 2
AIM: To verify the circular convolution operation Using DSK Code composer studio.
EQUIPMENTS NEEDED:
Host (PC) with windows (95/98/Me/XP/NT/2000).
TMS320C6713 DSP Starter Kit (DSK).
CRO, Function Generators, Connecting wires
INTRODUCTION:
Steps for circular Convolution
Steps for circular convolution are the same as the usual convolution, except all index calculations are
done "mod N" = "on the wheel"
Steps for Cyclic Convolution
Step1: “Plot f[m] and h[−m]
Subfigure 1.1 Subfigure 1.2
Step 2: "Spin" h[−m] n times Anti Clock Wise (counter-clockwise) to get h[n-m]
(i.e. Simply rotate the sequence, h[n], clockwise by n steps)
Step 3: Point wise multiply the f[m] wheel and the h[n−m] wheel. sum=y[n]
Step 4: Repeat for all 0≤n≤N−1
Example 1: Convolve (n = 4)
Figure 2: Step 2
Digital signal processing Lab Manual
DEPARTMENT OF ECE
46
Subfigure 3.1 Subfigure 3.2
Figure 3: Two discrete-time signals to be convolved.
h[−m] =
Figure 4
Multiply f[m] and sum to yield: y[0] =3
h[1−m]
Figure 5
Multiply f[m] and sum to yield: y[1] =5
h[2−m]
Figure 6
Multiply f[m] and sum to yield: y[2] =3
h[3−m]
Figure 7
Digital signal processing Lab Manual
DEPARTMENT OF ECE
47
Multiply f[m] and sum to yield: y[3] =1
PROCEDURE:
Open Code Composer Studio; make sure the DSP kit is turned on.
Start a new project using ‘Project-new ‘ pull down menu, save it in a
separate directory(c:\ti\myprojects) with name cir conv.pjt.
Add the source files Circular Convolution.C.
to the project using ‘Projectadd files to project’ pull down menu.
Add the linker command file hello.cmd .
(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)
Add the run time support library file rts6700.lib
(Path: c:\ti\c6000\cgtools\lib\rts6700.lib)
Compile the program using the ‘Project-compile’ pull down menu or by
clicking the shortcut icon on the left side of program window.
Build the program using the ‘Project-Build’ pull down menu or by
clicking the shortcut icon on the left side of program window.
Load the program(lconv.out) in program memory of DSP chip using the
‘File-load program’ pull down menu.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
48
PROGRAMMING FOR CIRCULAR CONVOLUTION IN ‘C’ LANGUAGE:
#include<stdio.h>
int m,n,x[30],h[30],y[30],i,j,temp[30],k,x2[30],a[30];
void main()
{
printf(" enter the length of the first sequence\n");
scanf("%d",&m);
printf(" enter the length of the second sequence\n");
scanf("%d",&n);
printf(" enter the first sequence\n");
for(i=0;i<m;i++)
scanf("%d",&x[i]);
printf(" enter the second sequence\n");
for(j=0;j<n;j++)
scanf("%d",&h[j]);
if(m-n!=0) /*If length of both sequences are not equal*/
{
Digital signal processing Lab Manual
DEPARTMENT OF ECE
49
if(m>n) /* Pad the smaller sequence with zero*/
{
for(i=n;i<m;i++)
h[i]=0;
n=m;
}
for(i=m;i<n;i++)
x[i]=0;
m=n;
}
y[0]=0;
a[0]=h[0];
for(j=1;j<n;j++) /*folding h(n) to h(-n)*/
a[j]=h[n-j];
/*Circular convolution*/
for(i=0;i<n;i++)
y[0]+=x[i]*a[i];
for(k=1;k<n;k++)
{
y[k]=0;
/*circular shift*/
for(j=1;j<n;j++)
x2[j]=a[j-1];
Digital signal processing Lab Manual
DEPARTMENT OF ECE
50
x2[0]=a[n-1];
for(i=0;i<n;i++)
{
a[i]=x2[i];
y[k]+=x[i]*x2[i];
}
}
/*displaying the result*/
printf(" the circular convolution is\n");
for(i=0;i<n;i++)
printf("%d \t",y[i]);
}
RESULT:
IN PUT:
Eg: x[4]={3, 2, 1,0}
h[4]={1, 1, 0,0}
OUT PUT: y[4]={3, 5, 3,0}
Digital signal processing Lab Manual
DEPARTMENT OF ECE
51
Extract Program
%Matlab program to compute linear convolution of a sequence
clc;
clear all;
close all;
x=input('enter first sequence');
y=input('enter second sequence');
n1=length(x);
n2=length(y);
temp=y;
y=fliplr(y);
x1=[zeros(1,n2-1) x];
y1=[y zeros(1,n1-1)];
for n=1:n1+n2-1
s=0;
for k=1:n1+n2-1
s=s+x1(k).*y1(k);
end;
c(n)=s;
y1=[y1(end) y1(1:end-1)];
end;
stem(c);
% a=abs(c);
% stem(a);
xlabel('time');
ylabel('magnitude');
title('linear convolution');
grid on;
Result:
enter first sequence[1,2,3]
enter second sequence[1,2,3]
Digital signal processing Lab Manual
DEPARTMENT OF ECE
52
VIVA QUESTIONS
1. What is the requirement for convolution?.
2. What is the difference between convolution & correlation?
3. What is meant by impulse response?
4. Is it possible to represent any discrete time signal in terms of impulses? If yes,
represent by using example.
5. Draw the h(2n-k) & h(n-2k) for the following sequence
h(n) = { 4 3 2 1} assume (i) k= 3 (ii) k =5.
6. Write the expressions for LTI system convolution formula & causal LTI system
convolution formula.
Digital signal processing Lab Manual
DEPARTMENT OF ECE
53
%matlab program to compute circular convolution of a sequence
clc;
clear all;
close all;
a=input('enter input sequences:');
b=input('enter input sequences:');
n1=length(a);
n2=length(b);
n=max(n1,n2);
n3=n1-n2;
if(n3<0)
a=[a,zeros(1,-n3)];
else
b=[b,zeros(1,n3)];
end
for x=1:n
f(x)=0;
for i=1:n
j=x-i+1;
if(j<=0)
j=n+j;
end
f(x)=f(x)+(a(i)*b(j));
end
end
display(f);
stem(f);
xlabel('n');
ylabel('magnitude');
title('plot of circular convolution');
Input:
enter input sequences: [1 2 3 4]
enter input sequences: [5 8 6 9]
Output:
f = 73 69 73 65
Expected graph:
Digital signal processing Lab Manual
DEPARTMENT OF ECE
54
VIVA QUESTIONS
1. Why we need circular convolution?
2.What is the difference between circular & linear convolution?
3.What is the length of output sequence after circular convolution if the lengths of input & impulse
responses are M1 & M2 respectively?
Digital signal processing Lab Manual
DEPARTMENT OF ECE
55
BUTTERWORTH IIR DIGITAL LOW PASS FILTERS:
%program for butter worth IIR digital LPF
Clc;
Close all;
Clear all;
wp=input('enter pass band cutoff frequency:');
ws=input('enter stop band cutoff frequency:');
rp=input('enter pass band ripple in db');
rs=input('enter stop band ripple in db');
fs=input('enter the sampling frequency');
w1=2*wp/fs;
w2=2*ws/fs;
[n,wn]=buttord(w1,w2,rp,rs,'s');
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=butter(n,wn,'s')
[b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b1,a1,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
Input:
enter pass band cutoff frequency:1500
enter stop band cutoff frequency:3000
enter pass band ripple in db10
enter stop band ripple in db40
enter the sampling freqency7000
Output:
b = 0 0 0 0 0 0 0.0040
a = 1.0000 1.5372 1.1815 0.5757 0.1870 0.0385 0.0040
Digital signal processing Lab Manual
DEPARTMENT OF ECE
56
BUTTERWORTH IIR DIGITALHIGH PASS FILTER:
%Program for digital IIR HPF
wp=input('enter pass band edge freq');
ws=input('enter stop band edge freq');
rp=input('enter passband ripple');
rs=input('enter stopband ripple');
[N,wn]=buttord(wp,ws,rp,rs);
[b,a]=butter(N,wn,'high');
[h,omega]=freqz(b,a);
gain=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(omega/pi,gain);
title('mag res of digital hpf');
xlabel('normalized freq----->');
ylabel('gain in db----->')
subplot(2,1,2);
plot(omega/pi,an);
title('phase res of digital hpf');
xlabel('normalized freq------->');
ylabel('angle---->');
Digital signal processing Lab Manual
DEPARTMENT OF ECE
57
Input:
enter pass band edge freq .5
enter stop band edge freq .8
enter pass band ripple 10
enter stop band ripple 40
Output:
b =
0.0992 -0.3967 0.5950 -0.3967 0.0992
a =
1.0000 -0.0674 0.4875 -0.0141 0.0178
Digital signal processing Lab Manual
DEPARTMENT OF ECE
58
BUTTERWORTH IIR DIGITAL BAND PASS FILTER :
clc;
clear all;
close all;
w1 =[.2 .7];
w2 =[.1 .8];
rp=0.3;
rs=40;
[n,wn]=buttord(w1,w2,rp,rs);
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=butter(n,wn);
% [b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
title('magnitude resonse');
grid on;
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
title('phase response');
grid on;
Digital signal processing Lab Manual
DEPARTMENT OF ECE
59
BUTTERWORTH IIR DIGITAL BAND STOP FILTER :
Clc;
Clear all;
Close all;
wp = [.1 .8];
ws = [.2 .7]
rp=0.3;
rs=40;
[n,wn]=buttord(w1,w2,rp,rs);
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=butter(n,wn,'stop');
% [b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
title('magnitude resonse');
grid on;
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
title('phase response');grid on;
Digital signal processing Lab Manual
DEPARTMENT OF ECE
60
CHEBYSHEV IIR DIGITAL LOWPASS FILTER:
w1 = .1;
w2 = .2;
rp=0.3;
rs=40;
[n,wn]=cheb1ord(w1,w2,rp,rs);
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=cheby1(n,rp,wn);
% [b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
title('magnitude resonse');
grid on;
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
title('phase response');
grid on;
Digital signal processing Lab Manual
DEPARTMENT OF ECE
61
CHEBYSHEV IIR DIGITAL HIGH PASS FILTERS:
w1 = .2,
w2 = .1
rp=0.3;
rs=40;
[n,wn]=cheb1ord(w1,w2,rp,rs);
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=cheby1(n,rp,wn,'high');
% [b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
title('magnitude resonse');
grid on;
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
title('phase response');
grid on;
Digital signal processing Lab Manual
DEPARTMENT OF ECE
62
CHEBYSHEV IIR DIGITAL BAND PASS FILTERS:
w1 = [.2 .7];
w2 = [.1 .8];
rp=0.3;
rs=40;
[n,wn]=cheb1ord(w1,w2,rp,rs);
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=cheby1(n,rp,wn);
% [b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
title('magnitude resonse');
grid on;
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
title('phase response');
grid on;
Digital signal processing Lab Manual
DEPARTMENT OF ECE
63
CHEBYSHEV IIR DIGITAL BAND STOP FILTER :
w1 = [.1 .8];
w2 = [.2 .7]
rp=0.3;
rs=40;
[n,wn]=cheb1ord(w1,w2,rp,rs);
%[z,p,k]=butter(n,wn);
%[b,a]=zp2tf(z,p,k);
[b,a]=cheby1(n,rp,wn,'stop');
% [b1,a1]=impinvar(b,a);
w=0:0.01:pi;
[h,om]=freqz(b,a,w);
m=20*log(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
title('magnitude resonse');
grid on;
subplot(2,1,2);
plot(om/pi,an);
xlabel('normalized frequency---->');
ylabel('phase in radians---->');
title('phase response');
grid on;
Digital signal processing Lab Manual
DEPARTMENT OF ECE
64
DESIGN FIR (LP/HP) FIR LOW PASS / HIGH PASS FILTERS
%Program for FIR LPF using blackman window
n=20;
fp=200;
fq=300;
fs=1000;
fn=2*fp/fs;
window=blackman(n+1);
b=fir1(n,fn,window);
[H W]=freqz(b,1,128);
subplot(2,1,1);
plot(W/pi,abs(H));
title('magnitude response of lpf');
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
subplot(2,1,2);
plot(W/pi,angle(H));
title('phase response of lpf');
ylabel('angle-------->');
xlabel('normalized frequency------>');
Result:
window =
-0.0000 0.0092 0.0402 0.1014 0.2008 0.3400 0.5098 0.6892 0.8492
0.9602 1.0000 0.9602 0.8492 0.6892 0.5098 0.3400 0.2008 0.1014
0.0402 0.0092 -0.0000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
65
b = 0.0000 -0.0003 -0.0009 0.0027 0.0101
-0.0000 -0.0386 -0.0430 0.0794 0.2906
0.3999 0.2906 0.0794 -0.0430 -0.0386
-0.0000 0.0101 0.0027 -0.0009 -0.0003
0.0000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
66
FIR LOW PASS FILTER DESIGN USING RECTANGLE WINDOW:
%Program for FIR LPF using rectangular window
n=20;
fp=200;
fq=300;
fs=1000;
fn=2*fp/fs;
window=rectwin(n+1);
b=fir1(n,fn,window);
[H W]=freqz(b,1,128);
subplot(2,1,1);
plot(W/pi,abs(H));
title('magnitude response of lpf');
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
subplot(2,1,2);
plot(W/pi,angle(H));
title('phase response of lpf');
ylabel('angle-------->');
xlabel('normalized frequency------>');
RESULT:-
window =
-0.0000 0.0092 0.0402 0.1014 0.2008 0.3400 0.5098 0.6892 0.8492
0.9602 1.0000 0.9602 0.8492 0.6892 0.5098 0.3400 0.2008 0.1014
0.0402 0.0092 -0.0000
b =
0.0000 -0.0003 -0.0009 0.0027 0.0101
-0.0000 -0.0386 -0.0430 0.0794 0.2906
0.3999 0.2906 0.0794 -0.0430 -0.0386
-0.0000 0.0101 0.0027 -0.0009 -0.0003
0.0000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
67
FIR LOW PASS FILTER DESIGN USING TRIANGLE WINDOW:
%program for FIR LPF using triangular window
n=20;
fp=200;
fq=300;
fs=1000;
fn=2*fp/fs;
window=triang(n+1);
b=fir1(n,fn,window);
[H W]=freqz(b,1,128);
subplot(2,1,1);
plot(W/pi,abs(H));
title('magnitude response of lpf');
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
subplot(2,1,2);
plot(W/pi,angle(H));
title('phase response of lpf');
ylabel('angle-------->');
xlabel('normalized frequency------>');
Digital signal processing Lab Manual
DEPARTMENT OF ECE
68
RESULT:-
window =
-0.0000 0.0092 0.0402 0.1014 0.2008 0.3400 0.5098 0.6892 0.8492
0.9602 1.0000 0.9602 0.8492 0.6892 0.5098 0.3400 0.2008 0.1014
0.0402 0.0092 -0.0000
b =
0.0000 -0.0003 -0.0009 0.0027 0.0101
-0.0000 -0.0386 -0.0430 0.0794 0.2906
0.3999 0.2906 0.0794 -0.0430 -0.0386
-0.0000 0.0101 0.0027 -0.0009 -0.0003
0.0000
Digital signal processing Lab Manual
DEPARTMENT OF ECE
69
FIR LOW PASS FILTER DESIGN USING HAMMING WINDOW:
%program for FIR LPF using Hamming window
n=20;
fp=200;
fq=300;
fs=1000;
fn=2*fp/fs;
window=hamming(n+1);
b=fir1(n,fn,window);
[H W]=freqz(b,1,128);
subplot(2,1,1);
plot(W/pi,abs(H));
title('magnitude response of lpf');
ylabel('gain in db-------->');
xlabel('normalized frequency------>');
subplot(2,1,2);
plot(W/pi,angle(H));
title('phase response of lpf');
ylabel('angle-------->');
xlabel('normalized frequency------>');
RESULT:-
window =
-0.0000 0.0092 0.0402 0.1014 0.2008 0.3400 0.5098 0.6892 0.8492
0.9602 1.0000 0.9602 0.8492 0.6892 0.5098 0.3400 0.2008 0.1014
0.0402 0.0092 -0.0000
b =
0.0000 -0.0003 -0.0009 0.0027 0.0101
-0.0000 -0.0386 -0.0430 0.0794 0.2906
0.3999 0.2906 0.0794 -0.0430 -0.0386
Digital signal processing Lab Manual
DEPARTMENT OF ECE
70