UNIVERSITY INSTITUTE OF ENGINEERING AND
TECHNOLOGY
KURUKSHETRA UNIVERSITY KURUKSHETRA
DEPT. OF ELECTRONICS & COMMUNICATION ENGINEERING
PRACTICAL FILE
Digital Signal Processing
Submitted To : Submitted By:
Ms. Rajni Pawan Garg
2507061
Ece(B) 4th year
INDEX
Sr. No.
Experiment Name Date Remark
1. Write a program to implement matrix algebra.
.
2. Write a program to plot following functions a)impulse function b)Unit Step c) Ramp function
3. Write a program to find out the convolution of two sequences using in built convolution function.
4. Write a program to plot Exponential function.
5. Write a program to implement loops.
6. To Implement FIR/Digital Filter.
7. Study different window functions available in signal processing toolbox and their controlling parameters.
8. Study of plots, subplots including functioning of hold on and off.
9. Write a program to implement autocorrelation function
10. Write a program to implement crosscorrelation function
Experiment: 1
Program: Write a program to implement Matrix Algebra.
Software Used: MATLAB 7.6
>> a=[1 2 3
4 5 6
7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> b=[4 6 7
7 9 3
3 5 7]
b =
4 6 7
7 9 3
3 5 7
>> %addition
>> a+b
ans
5 8 10
11 14 9
10 13 16
>> %subtraction
>> a-b
ans =
-3 -4 -4
-3 -4 3
4 3 2
>> %multiplication
>> a*b
ans =
27 39 34
69 99 85
111 159 136
>> %display a row
>> e=b(2,:)
e =
7 9 3
>> %display a column
>> f=b(:,2)
f =
6
9
5
>> z=[1 2 3 4]
z =
1 2 3 4
>> z=10:-3:1
z =
10 7 4 1
>> z=0:3:10
z =
0 3 6 9
>> x=zeros(1,3)
x =
0 0 0
>> x=[zeros(1,3); 4 5 6; ones(1,3)]
x =
0 0 0
4 5 6
1 1 1
>> y=rand(2,2)
y =
0.8147 0.1270
0.9058 0.9134
>> who
Your variables are:
a ans b e f x y z
>> whos
Name Size Bytes Class Attributes
a 3x3 72 double
ans 3x3 72 double
b 3x3 72 double
e 1x3 24 double
f 3x1 24 double
x 3x3 72 double
y 2x2 32 double
z 1x4 32 double
Experiment: 2
Program: Write a program to plot following functions
a) impulse function b)Unit Step c) Ramp function d) sin and cos function
Software Used: MATLAB 7.6
%--Program to Generate IMPULSE function--%
m = 20
for i = -m:m
if(i==0)
y = 1
stem(i,y,'r+')
hold on
else
continue;
end
end
hold off
%--Program for UNIT Step function--%
n=10
for t= -n:1:n
if(t>0)
z = 1
plot(t,z,'+');
hold on
else
continue;
end
end
hold off
%--Program to Plot RAMP function--%
t = 0:1:10
y=3*t
plot(t,y,'r')
%--Program to plot Sine and Cosine function --%
x = 0:.0001:1
f = cos(2*pi*x)
g = sin(2*pi*x)
plot(x,f,'b+');
hold on;
plot(x,g,'r');
hold off;
OUTPUTS:-
impulse function:
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
unit step:
1 2 3 4 5 6 7 8 9 100
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
ramp function:
0 1 2 3 4 5 6 7 8 9 100
5
10
15
20
25
30
sin and cos function:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Experiment: 3
Program: Write a program to find out the convolution of two sequences using in built convolution function.
Software Used: MATLAB 7.6
clc;
clear all;
close all;
disp('linear convolution program');
x=input('enter i/p x(n):');
m=length(x);
h=input('enter i/p h(n):');
n=length(h);
x=[x,zeros(1,n)];
subplot(2,2,1), stem(x);
title('i/p sequencce x(n)is:');
xlabel('---->n');
ylabel('---->x(n)');grid;
h=[h,zeros(1,m)];
subplot(2,2,2), stem(h);
title('i/p sequencce h(n)is:');
xlabel('---->n');
ylabel('---->h(n)');grid;
disp('convolution of x(n) & h(n) is y(n):');
y=zeros(1,m+n-1);
for i=1:m+n-1
y(i)=0;
for j=1:m+n-1
if(j<i+1)
y(i)=y(i)+x(j)*h(i-j+1);
end
end
end
subplot(2,2,[3,4]),stem(y);
title('convolution of x(n) & h(n) is :');
xlabel('---->n');
ylabel('---->y(n)');grid;
OUTPUT:
0 2 4 6 80
2
4
6i/p sequencce x(n)is:
---->n
---->
x(n)
0 2 4 6 80
0.5
1
1.5
2i/p sequencce h(n)is:
---->n
---->
h(n)
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60
5
10
15convolution of x(n) & h(n) is :
---->n
---->
y(n)
Experiment: 4
Program: Write a program to plot Exponential function.
Software Used: MATLAB 7.6
%--Program to Plot Exponential Function--%
a= input('enter the value of a')
b = input('enter the value of b')
c = a+i*b
k=10
n=1:10
x= k*exp(c*n)
y = abs(x)
subplot(2,2,1:2)
stem(n,y)
xlabel('time')
ylabel('Mag.')
title('Magnitude Response')
z = angle(x) subplot(2,2,3:4) stem(n,z) xlabel('time') ylabel('Phase') title('Phase Response')
OUTPUT:
enter the value of a10
a =
10
enter the value of b10
b =
10
1 2 3 4 5 6 7 8 9 10-4
-2
0
2
4
time
Pha
se
Phase Response
1 2 3 4 5 6 7 8 9 100
1
2
3x 10
44
time
Mag
.
Magnitude Response
EXPERIMENT NO.5
Program: Write a program to implement loops.
Software Used: MATLAB 7.6
%--while loop--%
i=1
while i<5
disp ['hello']
i=i+1;
end
%--if loop--%
a=10;
b=20;
if(a<b)
'yes'
if(a>=b)
'no' end
end
%--if else if--% x=5 y=10 z=15
if((x>y)&(x>z)) 'x is greatest of the three' elseif(y>z) 'y is greatest' else 'z is greatest' End %--switch--% method = 'Bilinear'; switch lower(method) case {'linear','bilinear'} disp('Method is linear') case 'cubic' disp('Method is cubic') otherwise
disp('hello! method is not there')
end
OUTPUT:
i =
1
['hello']
['hello']
['hello']
['hello']
ans =
yes
x =
5
y =
10
z =
15
ans =
z is greatest
Method is linear
EXPERIMENT NO.6
Program: write a program to implement fir filter
Software used: matlab 7.6
f = [0 0.6 0.6 1]; m = [1 1 0 0];
b = fir2(30,f,m);
[h,w] = freqz(b);
plot(f,m,w/pi,abs(h))
legend('Ideal','fir2 Designed')
title('Frequency Response Magnitudes')
OUTPUT:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.2
0.4
0.6
0.8
1
1.2
1.4Frequency Response Magnitudes
Ideal
fir2 Designed
EXPERIMENT NO.7
Program: Study different window functions available in signal
processing toolbox and their controlling parameters.
Software Used: MATLAB 7.6
N = 65;
w = window(@blackmanharris,N);
w1 = window(@hamming,N);
w2 = window(@gausswin,N,2.5);
wvtool(w,w1,w2)
OUTPUT:
10 20 30 40 50 600
0.2
0.4
0.6
0.8
1
Samples
Am
plitu
de
Time domain
0 0.2 0.4 0.6 0.8-150
-100
-50
0
50
Normalized Frequency ( rad/sample)
Mag
nitu
de (
dB)
Frequency domain
Experiment: 8
Program: Study of plots, subplots including functioning of hold on and off.
Software Used: MATLAB 7.6
%--subplot1--%
t = 0:.0001:1;
y = sin(2*pi*t)
subplot(2,2,1);
plot(t,y)
z = cos(2*pi*t)
subplot(2,2,2);
plot(t,z);
%--subplot2--%
q = 0:.001:1
a = sin(2*pi*q)
subplot(2,2,1:2)
plot(q,a)
xlabel('time')
ylabel('amplitude')
title('sine1')
b = cos(2*pi*q)
subplot(2,2,3)
plot(q,b)
xlabel('time')
ylabel('amplitude')
title('cos')
c = sin(pi*q)
subplot(2,2,4)
plot(q,c)
xlabel('time')
ylabel('amplitude')
title('sine2')
OUTPUT1:
0 0.5 1-1
-0.5
0
0.5
1
0 0.5 1-1
-0.5
0
0.5
1
OUTPUT2:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.5
0
0.5
1
time
am
plit
ude
sine1
0 0.5 1-1
-0.5
0
0.5
1
time
am
plit
ude
cos
0 0.5 10
0.5
1
time
am
plit
ude
sine2
EXPERIMENT 9:
Program: Write a program to implement autocorrelation function.
Software Used: MATLAB 7.6
N=1024; % Number of samples
f1=1; % Frequency of the sinewave
FS=200; % Sampling Frequency
n=0:N-1; % Sample index numbers
x=sin(2*pi*f1*n/FS); % Generate the signal, x(n)
t=[1:N]*(1/FS); % Prepare a time axis
subplot(2,1,1); % Prepare the figure
plot(t,x); % Plot x(n)
title('Sinwave of frequency 1000Hz [FS=8000Hz]');
xlabel('Time, [s]');
ylabel('Amplitude');
grid;
Rxx=xcorr(x); % Estimate its autocorrelation
subplot(2,1,2); % Prepare the figure
plot(Rxx); % Plot the autocorrelation
grid;
title('Autocorrelation function of the sinewave');
xlabel('lags');
ylabel('Autocorrelation');
OUTPUT:
0 1 2 3 4 5 6-1
-0.5
0
0.5
1Sinwave of frequency 1000Hz [FS=8000Hz]
Time, [s]
Am
plitu
de
0 500 1000 1500 2000 2500-500
0
500
1000Autocorrelation function of the sinewave
lags
Aut
ocor
rela
tion
EXPERIMENT 10:
Program: Write a program to implement crosscorrelation function.
Software Used: MATLAB 7.6
N=1024; % Number of samples to generate
f=1; % Frequency of the sinewave
FS=200; % Sampling frequency
n=0:N-1; % Sampling index
x=sin(2*pi*f*n/FS); % Generate x(n)
y=x+10*randn(1,N); % Generate y(n)
subplot(3,1,1);
plot(x);
title('Pure Sinewave');
grid;
Rxy=xcorr(x,y); % Estimate the cross correlation
subplot(3,1,2);
plot(Rxy);
title('Cross correlation Rxy');
grid;
OUTPUT:
0 200 400 600 800 1000 1200-1
0
1Pure Sinewave
0 500 1000 1500 2000 2500-500
0
500Cross correlation Rxy