Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
In Lab Tasks
Task-1: Write a MATLAB code to decompose a sequence into its even and odd components. Take
help from Pre-Lab work.
M-FILE CODE:
t=-10:10; %vector time
x=rand(1,numel(t)); % Your signal
xmt=[fliplr(x(t>=0)) fliplr(x(t<0))]
xe=(xmt+x)./2
xo=(x-xmt)./2
subplot(3,1,1);
stem(t,x,'FILLED');
legend('x[n]');
title('Your signal x')
subplot(3,1,2);
stem(t,xe,'FILLED');
title('Even part')
legend('xe[n]');
subplot(3,1,3);
stem(t,xo,'FILLED');
legend('xo[n]');
title('Odd part');
GRAPH:
Your signal x
1
x[n]
0.5
0
-10 -8 -6 -4 -2 0 2 4 6 8 10
Even part
1
xe[n]
0.5
0
-10 -8 -6 -4 -2 0 2 4 6 8 10
Odd part
0.5
xo[n]
0
-0.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
Page |2
subplot(3,1,1);
stem(n_x,x,'FILLED');
title('Original Signal');
legend('x[n]');
subplot(3,1,2);
stem(n_h,h,'FILLED');
title('Impulse Signal');
legend('h[n]');
dif_1=x1-h1;
dif_2=x2-h2;
y=conv(x_n,h_n);
subplot(3,1,3);
n_y=-1*(length(y)-1)./2:(length(y)-1)./2;
stem(n_y,y,'FILLED')
Page |3
title('Output Signal');
legend('y[n]');
end
COMMAND WINDOW CODE:
x1=-5;
x2=+5;
nx=x1:x2;
h1=-10;
h2=10;
nh=h1:h2;
x=cos(nx);
h=sin(nh);
plot(nx,x)
plot(nh,h)
conv_m(x,x1,x2,h,h1,h2)
GRAPH:
Original Signal
1
x[n]
0
-1
-5 -4 -3 -2 -1 0 1 2 3 4 5
Impulse Signal
1
h[n]
0
-1
-10 -8 -6 -4 -2 0 2 4 6 8 10
Output Signal
5
y[n]
0
-5
-20 -15 -10 -5 0 5 10 15 20
Page |4
Task-2: You should have noticed that ‘conv’ command calculates convolution assuming both
input sequences are starting from origin (i-e no values on –ve t-axis). This is not always the case,
we do have sequences which have values for t<0. Write a code conv_m that would remove this
limitation in the code conv.
Task-3 Convolve following sequences using MATLAB Function “conv” and “conv_m” and plot
the input, impulse response and output in one figure using “subplot”:
x[n] = [1 2 1], n=[0 1 2] h[n] = [1 1 1], n= [0 1 2]
PART (a)
M-FILE CODE:
x = [1 2 1];
n=[0 1 2];
h = [1 1 1];
subplot(3,1,1);
stem(n,x,'FILLED');
legend('x[n]');
title('input signal')
subplot(3,1,2);
stem(n,h,'FILLED');
legend('h[n]');
title('impulse signal')
subplot(3,1,3);
y=conv(h,x);
stem(0:length(y)-1,y,'FILLED');
legend('y[n]');
title('output signal')
GRAPH:
Page |5
input signal
2
x[n]
1
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
impulse signal
1
h[n]
0.5
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
output signal
4
y[n]
2
0
0 0.5 1 1.5 2 2.5 3 3.5 4
PART (b)
M-FILE CODE:
x= [-1 4 -3 -2 1 0 2];
nx=[-2:4];
h= [1 1 1];
nh= [-1 0 1]
stem(nx,x)
title('input signal')
subplot(3,1,2);
stem(nh,h);
title('impulse signal')
y=conv_m(x,-2,4,h,-1,1)
GRAPH:
Page |6
Original Signal
5
x[n]
0
-5
-2 -1 0 1 2 3 4
Impulse Signal
1
h[n]
0.5
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Output Signal
5
y[n]
0
-5
-6 -4 -2 0 2 4 6
Task 4: Write a function convolution in MATLAB that performs 1D linear convolution by the
steps mentioned above. You can use any method.
Page |7
M-FILE CODE:
n=-5,1;
x=[-1 5 -3 -5 1 8 2];
n1=0:3;
h = [1 2 1 2]
f=conv(x,h);
stem(-5:4,f)
end
GRAPH:
Page |8
The output of an LTI system was derived from the input and impulse signals
through convolution.
Convolution was performed using different methods an the drawback of ‘conv’
command was discussed in detail. The conv command after convolution
automatically starts the signal from n=0 which is not the case for most periodic
signals centered at n=0.
To overcome this drawback, a new usermade function was designed called
conv_m which removed this drawback and also allowed the convolution of
signals with unequal length which in not possible using the built in conv
command.