DSP Lab 05
DSP Lab 05
DSP Lab 05
Lab Objective:
The aim of this Lab is to illustrate the simulation of some simple discrete-time systems on the computer using MATLAB and investigate their time domain properties.
Description:
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
Mathematically:
A linear time-invariant (LTI) discrete-time system satisfies both the linearity and the timeinvariance properties.
Linearity:
X[n] = x1[n] + x2[n] The response to the system Y[n] = y1[n] + y2[n]
A system is called time invariant if its input-output characteristics do not change with time. A related system is time invariant or shift invariant if and only if
X (n) ---------Y(n)
X (n-k) ---------Y(n-k)
The response of a discrete-time system to a unit sample sequence {[n]}is called the unit sample response or, simply, the impulse response, and denoted as {h[n]}. Correspondingly, the response of a discrete-time system to a unit step sequence {[n]}, denoted as {s[n]}, is its unit step response or, simply the step response.
In matlab, there is a built-in function called filter. The syntax is y = filter (B, A, x)
where
y is the output signal (returned equal in length to x), A is a vector of filter feedback coefficients, and B is a vector of filter feedforward coefficients. The feed forward coefficients needed for the simplest lowpass filter are: B=[1, 1]. With these settings, the filter function implements
Matlab Code:
N=10; % length of test input signal
x = 1:N; % test input signal (integer ramp) B = [1,1]; % transfer function numerator A = 1; % transfer function denominator
Output:
x(1)=1.000000 x(2)=2.000000 y(1)=1.000000 y(2)=3.000000
Matlab Code:
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];
y1 = filter(num,den,x1); % Compute the output y1[n] y2 = filter(num,den,x2); % Compute the output y2[n] y = filter(num,den,x); % Compute the output y[n] yt = a*y1 + b*y2; d = y - yt; % Compute the difference output d[n] % Plot the outputs and the difference signal subplot (3,1,1) stem(n ,y); ylabel('Amplitude'); title('Output Due to Weighted Input'); subplot(3,1,2) stem(n,yt); ylabel('Amplitude'); title('Weighted Output'); subplot(3,1,3) stem(n,d); xlabel('Time index n'); ylabel('Amplitude'); title('Difference Signal');
Lab Task 1:
Run above program and compare y[n] obtained with weighted input with yt[n] obtained by combining the two outputs y1[n] and y2[n] with the same weights. Are these two sequences equal? Is this system linear?
Lab Task 2:
Consider another system described by y[n] = x[n] + x 1]. Modify given program [n using function to compute the output sequences y1[n], y2[n], and y[n] of the above system. Compare y[n] with yt[n]. Are these two sequences equal? Is this system linear?
Lab Task 3:
Consider the following two discrete-time systems characterized by the difference equations. System No. 1: y[n] = 0.5 x[n] + 0.27 x[n 1] + 0.77 x[n 2],
System No. 2: y[n] = 0.45 x[n] + 0.5 x[n 1] + 0.45 x[n 2] + 0.53 y[n 1] 0.46 y[n 2]. Write a MATLAB Program to compute the outputs of the above two systems for an input X[n]=cos(20n/256)+ cos(200n/256)
Two input sequences x[n] and x[n - D], are generated and corresponding output sequences y1[n], y2[n] are plotted.
Matlab Code:
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]; % Compute the output y[n] y = filter(num,den,x); % Compute the output yd[n] yd = filter(num,den,xd); % Compute the difference output d[n] d = y - yd(1+D:41+D); % Plot the outputs subplot(3,1,1) stem(n,y); ylabel('Amplitude'); 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;
Lab Task 4:
Modify above program to pass delay variable D using function and repeat for three different values of D.
Lab Task 5:
Consider another system described by: y[n] = nx[n] + x[n 1]
Modify Program using function to simulate the above system and determine whether this system is time-invariant or not.
Matlab Code:
clc; N=40; Num = [2.2403 2.4908 2.2403]; Den = [1 0.4 0.75];
Y= impz(Num,Den,N); stem(Y); xlabe l(Time index n); ylabel (Amplitude); title (Impulse Response);
Lab Task 6:
Modify Program using function to generate the rst 45 samples of the impulse response of the following causal LTI system:
which denes a causal M-point smoothing FIR lter. The system is also known as a moving average lter.
MATLAB CODE:
n = 0:100; s1 = cos(2*pi*0.05*n); % A low frequency sinusoid s2 = cos(2*pi*0.47*n); % A high frequency sinusoid x = s1+s2; % Implementation of the moving average filter M = input(Desired length of the filter = ); num = ones(1,M); y = filter(num,1,x)/M; % Display the input and output signals clf; subplot(2,2,1); plot(n,s1); axis([0, 100, -2, 2]); xlabel(Time index n); ylabel(Amplitude); title(Signal # 1); subplot(2,2,2);
plot(n,s2); axis([0, 100, -2, 2]); xlabel(Time index n); ylabel(Amplitude); title(Signal # 2); subplot(2,2,3); plot(n,x); axis([0, 100, -2, 2]); xlabel(Time index n); ylabel(Amplitude); title(Input Signal); subplot(2,2,4); plot(n,y); axis([0, 100, -2, 2]); xlabel(Time index n); ylabel(Amplitude); title(Output Signal);
Lab Task 7:
Modify above program to pass different feed-forward coefficient using Matlab function.