DISCRETE-TIME SIGNALS IN THE TIME DOMAIN
Program P1 1 can be used to generate and plot a unit sample sequence.
% Program P1_1
% Generation of a Unit Sample Sequence
clf;
% Generate a vector from -10 to 20
n = -10:20;
% Generate the unit sample sequence
u = [zeros(1,10) 1 zeros(1,20)];
% Plot the unit sample sequence
stem(n,u);
xlabel(’Time index n’);ylabel(’Amplitude’);
title(’Unit Sample Sequence’);
axis([-10 20 0 1.2]);
For the generation of a complex exponential sequence we use the command
x = K*exp(c*n);
For the generation of a real exponential sequence we use the command
x = K*a.^+n;
A simple example that generates a sinusoidal signal.
% Program P1_2
% Generation of a sinusoidal sequence
n = 0:40;
f = 0.1;
phase = 0;
A = 1.5;
arg = 2*pi*f*n - phase;
x = A*cos(arg);
clf; % Clear old graph
stem(n,x); % Plot the generated sequence
axis([0 40 -2 2]);
grid;
title(’Sinusoidal Sequence’);
xlabel(’Time index n’);
ylabel(’Amplitude’);
axis;
Simple Operations on Sequences
Signal Smoothing:
Program P1 3 implements the above algorithm.
% Program P1_3
% Signal Smoothing by Averaging
clf;
R = 51;
d = 0.8*(rand(R,1) - 0.5); % Generate random noise
m = 0:R-1;
s = 2*m.*(0.9.^m); % Generate uncorrupted signal
x = s + d’; % Generate noise corrupted signal
subplot(2,1,1);
plot(m,d’,’r-’,m,s,’g--’,m,x,’b-.’);
xlabel(’Time index n’);ylabel(’Amplitude’);
legend(’d[n] ’,’s[n] ’,’x[n] ’);
x1 = [0 0 x];x2 = [0 x 0];x3 = [x 0 0];
y = (x1 + x2 + x3)/3;
subplot(2,1,2);
plot(m,y(2:R+1),’r-’,m,s,’g--’);
legend(’y[n] ’,’s[n] ’);
xlabel(’Time index n’);ylabel(’Amplitude’);
DISCRETE-TIME SYSTEMS IN TIME DOMAIN
% Program P2_1
% Simulation of an M-point Moving Average Filter
% Generate the input signal
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’);
axis;
Illustration Cascade of LTI Systems
% Program for Cascade Realization
clf;
x = [1 zeros(1,40)]; % Generate the input
n = 0:40;
% Coefficients of 4th-order system
den = [1 1.6 2.28 1.325 0.68];
num = [0.06 -0.19 0.27 -0.26 0.12];
% Compute the output of 4th-order system
y = filter(num,den,x);
% Coefficients of the two 2nd-order systems
num1 = [0.3 -0.2 0.4];den1 = [1 0.9 0.8];
num2 = [0.2 -0.5 0.3];den2 = [1 0.7 0.85];
% Output y1[n] of the first stage in the cascade
y1 = filter(num1,den1,x);
% Output y2[n] of the second stage in the cascade
y2 = filter(num2,den2,y1);
% Difference between y[n] and y2[n]
d = y - y2;
% Plot output and difference signals
subplot(3,1,1);
stem(n,y);
ylabel(’Amplitude’);
title(’Output of 4th-order Realization’);grid;
subplot(3,1,2);
stem(n,y2)
ylabel(’Amplitude’);
title(’Output of Cascade Realization’);grid;
subplot(3,1,3);
stem(n,d)
xlabel(’Time index n’);ylabel(’Amplitude’);
title(’Difference Signal’);grid;
Illustration Convolution
The following MATLAB program illustrates this approach.
% Program
clf;
h = [3 2 1 -2 1 0 -4 0 3]; % impulse response
x = [1 -2 3 -4 3 2 1]; % input sequence
y = conv(h,x);
n = 0:14;
subplot(2,1,1);
stem(n,y);
xlabel(’Time index n’); ylabel(’Amplitude’);
title(’Output Obtained by Convolution’);grid;
x1 = [x zeros(1,8)];
y1 = filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel(’Time index n’); ylabel(’Amplitude’);
title(’Output Generated by Filtering’);grid;
Illustration of Filtering Concept
System No. 1
System No. 2
MATLAB Program P2_4 is used to compute the outputs of the above two systems for an input
% Program
% Generate the input sequence
clf;
n = 0:299;
x1 = cos(2*pi*10*n/256);
x2 = cos(2*pi*100*n/256);
x = x1+x2;
% Compute the output sequences
num1 = [0.5 0.27 0.77];
y1 = filter(num1,1,x); % Output of System No. 1
den2 = [1 -0.53 0.46];
num2 = [0.45 0.5 0.45];
y2 = filter(num2,den2,x); % Output of System No. 2
% Plot the output sequences
subplot(2,1,1);
plot(n,y1);axis([0 300 -2 2]);
ylabel(’Amplitude’);
title(’Output of System No. 1’);grid;
subplot(2,1,2);
plot(n,y2);axis([0 300 -2 2]);
xlabel(’Time index n’); ylabel(’Amplitude’);
title(’Output of System No. 2’);grid;
0 comments:
Post a Comment