0% found this document useful (0 votes)
149 views8 pages

Discrete-Time Systems Lab Guide

This document discusses discrete time linear time-invariant (LTI) systems. It introduces key concepts such as linearity, time-invariance, stability, impulse response, and step response. MATLAB programs are provided to test if a system is linear and time-invariant by comparing output responses. Other programs compute and plot the impulse response and step response of examples systems. Stability of systems is tested by checking if the impulse response is absolutely summable. Convolution is also introduced along with a custom convolution function for MATLAB.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
149 views8 pages

Discrete-Time Systems Lab Guide

This document discusses discrete time linear time-invariant (LTI) systems. It introduces key concepts such as linearity, time-invariance, stability, impulse response, and step response. MATLAB programs are provided to test if a system is linear and time-invariant by comparing output responses. Other programs compute and plot the impulse response and step response of examples systems. Stability of systems is tested by checking if the impulse response is absolutely summable. Convolution is also introduced along with a custom convolution function for MATLAB.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

LAB 2: DISCRETE TIME SYSTEMS

Introduction
Mathematically, a discrete-time system is described as an operator T[.] that takes a sequence
x(n) called excitation and transforms it into another sequence y(n) (called response). Discrete
time systems can be classified into two categories i) LTI systems ii) NON-LTI systems. A
discrete system T[.] is a linear operator L[.] if and only if L[.] satisfies the principle of
superposition, namely
L[a1x1(n) + a2x2(n)] = a1L[x1(n)] + a2Lx2(n)] and
A discrete system is time-invariant if
Shifting the input only causes the same shift in the output
A system is said to be bounded-input bounded-output(BIBO) stable if every bounded input
produces a bounded output.

An LTI system is BIBO stable if and only if its impulse response is absolutely summable.

A system is said to be causal if the ouput at index n0 depends only on the input up to and
including the index no; that is output does not depend on the future values of the input. An
LTI system is causal if and only if the impulse response is

1. Linearity and Non-Linearity


We now investigate the linearity property of a causal system of described by following
equation
y[n]0.4 y[n1]+0.75 y[n2] = 2.2403 x[n]+2.4908 x[n1]+2.2403
x[n2] Following program simulates the above mentioned equation.

clear all,
close all
n = 0:40;

a = 2; b = -3;
x1 = cos(2*pi*0.1*n);
x2 = cos(2*pi*0.4*n);
x = a*x1 + b*x2;
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
ic = [0 0 ]; % Set zero initial conditions
y1 = filter(num,den,x1,ic); % Compute the output y1[n]
y2 = filter(num,den,x2,ic); % Compute the output y2[n]
y = filter(num,den,x,ic); % Compute the output y[n]
yt = a*y1 + b*y2;
Output Due to Weighted Input
50

Amplitude

d = y - yt; % Compute the difference output d[n] % Plot the outputs and the
difference signal subplot (3,1,1)
0

30

35

40

30

35

40

Amplitude

Amplitude

subplot(3,1,1);
stem(n -50
,y);
0
5
10
15
20
25
ylabel('Amplitude');
title('Output Due to Weighted Input');
Weighted Output
subplot(3,1,2);
50
stem(n,yt);
ylabel('Amplitude');
0
title('Weighted
Output');
subplot(3,1,3);
stem(n,d);
-50
0 index5n');
10
15
20
25
xlabel('Time
ylabel('Amplitude');
Difference Signal
axis ([0 40
30 0 30])
title('Difference Signal');
20

Question
10 1: Run above program and compare y[n] obtained with weighted input with
yt[n] obtained
by combining the two outputs y 1[n] and y2[n] with the same weights. Are
0
0
5
10
15
20
25
30
35
40
these two sequences equal? Is this system
Timelinear?
index n

yes! linear.
2. Time-Invariant and Time-Varying Systems
We next investigate the time-invariance property. Following Program simulates
following difference equation
y[n]0.4 y[n1]+0.75 y[n2] = 2.2403 x[n]+2.4908 x[n1]+2.2403 x[n2]

Two input sequences x[n] and x[n - D], are generated and corresponding
output sequences y1[n], y2[n] are plotted.

close all, clear all


n = 0:40;
D = 10;
a = 3.0;
b = -2;
x = a*cos(2*pi*0.1*n) + b*cos(2*pi*0.4*n);
xd = [zeros(1,D) x];
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
ic = [0 0];% Set initial conditions
% Compute the output y[n]
y = filter(num,den,x,ic);
% Compute the output yd[n]
yd = filter(num,den,xd,ic);
% Compute the difference output d[n]
d = y - yd(1+D:41+D);
% Plot the outputs
subplot(3,1,1)
stem(n,y);
ylabel('mplitude');
title('Output y[n]');
grid;
subplot(3,1,2)
stem(n,yd(1:41));
ylabel('Amplitude');
title(['Output Due to Delayed Input x[n , num2str(D),]']);
grid;
subplot(3,1,3)
stem(n,d);
xlabel('Time index n');
ylabel('Amplitude');
title('Difference Signal');
grid;
3. Impulse Response computation
Following equation computes impulse response of following difference eq

y[n]0.4 y[n1]+0.75 y[n2] = 2.2403 x[n]+2.4908 x[n1]+2.2403 x[n2]

% Compute the impulse response y


clf;
N = 40;
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
y = impz(num,den,N);
% Plot the impulse response
Impulse Response
stem(y); 4
4
xlabel('Time index n'); ylabel('Amplitude');
title('Impulse Response'); grid
3
3

Amplitude

2
Question 22: Use filter command to get the impulse response of the same system.
% Compute the impulse response y
1
clf;
1
n=0:40;
N = length(n);
x=[1,zeros(1,N-1)];
0
num = [2.2403
0 2.4908 2.2403];
den = [1 -0.4 0.75];
y = filter(num,den,x);
-1
yd = impz(num,den,N);
-1
% Plot the impulse response
stem(n,y) -2
figure (2) -2
stem(n,yd)
xlabel('Time index n')
-3
ylabel('Amplitude')
5
10
15
20
25
30
35
-30
title('Impulse
0 Response')
5
10
15
20
25
30
35
Time index n

Question 3: Write a MATLAB program to generate and plot the step response of a
causal LTI system used in the previous Question.
% Compute the impulse response y
clf;
n=0:40;
N = length(n);
x=ones(1, N);
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
y = filter(num,den,x);
% Plot the impulse response
stem(n,y)

40
40

3
2
1
xlabel('Time index n')
ylabel('Amplitude')
title('Impulse
Response')
0
0
5
10

15

20
25
Time index n

30

35

40

4. Stability of LTI Systems

% Stability test based on the sum of the absolute


% values of the impulse response samples
clf;
num = [1 -0.8]; den = [1 1.5 0.9];
N = 200;
h = impz(num,den,N+1);
parsum = 0;
for k = 1:N+1;
parsum = parsum + abs(h(k));
if abs(h(k)) < 10^(-6),
break,
end
end
% Plot the impulse response
n = 0:N;
stem(n,h)
xlabel('Time index n');
ylabel('Amplitude');
% Print the value of abs(h(k))
disp('Value =');
disp(abs(h(k)))
Question 4: What is the discrete-time system whose impulse response is being
determined by above Program? Run Program to generate the impulse response. Is this
system stable? If |h[K]| is not smaller than 10

but the plot shows a decaying impulse

response, run the program again with a larger value of N.

ACTUAL WAS NOT STABLE BUT AFTER INCREASING VALUE OF N IT


BECAME STABLE:
% Stability test based on the sum of the absolute
% values of the impulse response samples
clf;
num = [1 -0.8]; den = [1 1.5 0.9];
N = 500;

Amplitude

2
h = impz(num,den,N+1);
parsum = 0;
for k = 1:N+1;
parsum =1 parsum + abs(h(k));
if abs(h(k)) < 10^(-6),
break,
end
0
end
% Plot the impulse response
n = 0:N;
stem(n,h)
-1
xlabel('Time index n');
ylabel('Amplitude');
% Print the value of abs(h(k))
-2
disp('Value
=');
disp(abs(h(k)))

OUTPUT:-3
Value = 0
9.1752e-007

50

100

150

200
250
300
Time index n

350

400

450

500

Question 5: Consider the following discrete-time system characterized by the difference


equation
y[n] = x[n] 4 x[n 1] + 3x[n 2] + 1.7 y[n 1] y[n 2].
Modify the Program to compute and plot the impulse response of the above system. Is
this system stable?
% Stability test based on the sum of the absolute
% values of the impulse response samples
clf;
num = [3 -4 1]; den = [1 -1.7 1];
N = 200;
h = impz(num,den,N+1);
parsum = 0;
for k = 1:N+1;
parsum = parsum + abs(h(k));
if abs(h(k)) < 10^(-6),
break,
end
end
% Plot the impulse response
n = 0:N;
stem(n,h)
xlabel('Time index n');
ylabel('Amplitude');
% Print the value of abs(h(k))

disp('Value =');
disp(abs(h(k)))

OUTPUT:
Value =
0.1073
SO UNSTABLE.
5 Convolution in MATLAB
MATLAB does provide a built-in function called conv that computes the convolution
between two finite duration sequences. The conv function assumes that the two
sequences begin at n=0.
>> y = conv(x, h);

However The conv function neither provides nor accepts any timing information. What is
needed is a beginning point and an end point of y(n). So we define another function conv_m.
The following example will clear its usage.

% x(n)=[3,11,7,0,-1,4,2]; nx = [-3:3]
% h(n)=[2,3,0,-5,2,1]; nh = [-1:4]
% y(n)=conv(x,h)
x = [3, 11, 7, 0, -1, 4, 2];
nx = [-3: 3];
h = [2, 3, 0, -5, 2, 1];
nh = [-1: 4];
[y,ny] = conv_m(x,nx,h,nh)
Stem(y,ny)

You might also like