Experiment-2
Examples
Example-1
%% Experiment - 2
% Example - 1
clc;
clear;
figure;
%% Without using inbuilt function
n = -5 : 10; % Discrete time index
x = [n >= 0] + 2 * [n >= 1] - 3 * [n >= 3]; % Input signal
y = 0; % y[-1] = 0
for k = 1 : length(n)
term = y(end) + x(k);
y = [y term];
end
y = y(2:end); % Left shift by 1 unit
subplot(211)
hold on;
stem(x, 'filled')
stem(y, 'filled')
hold off;
title('Accumulator response', 'Ashrith 200902016')
legend('Input x[n]', 'Output y[n]')
xlabel('n'), ylabel('Amplitude')
%% With using inbuilt function
n = -5 : 10; % Discrete time index
x = [n >= 0] + 2 * [n >= 1] - 3 * [n >= 3]; % Input signal
y = filter([1], [1, -1], x);
subplot(212)
hold on;
stem(x, 'filled')
stem(y, 'filled')
hold off;
title('Accumulator response', 'Ashrith 200902016')
legend('Input x[n]', 'Output y[n]')
xlabel('n'), ylabel('Amplitude')
Example-2
%% Experiment - 2
% Example - 2
clc;
clear;
figure;
%% Without using inbuilt function
n = -5 : 15; % Discrete time index
x = [n == 0] + 2 * [n == 4] - 3 * [n == 8]; % Input signal
x1 = [0 0 x]; % x[n-1]
x2 = [0 x 0]; % x[n]
x3 = [x 0 0]; % x[n+1]
y = x2 + (x1 + x3) / 2;
y(1) = []; y(end) = [];
subplot(211)
hold on;
stem(n, x, 'filled')
stem(n, y, 'filled')
hold off;
title('Bilinear interpolator response', 'Ashrith 200902016')
legend('Input x[n]', 'Output y[n]')
xlabel('n'), ylabel('Amplitude')
%% With using inbuilt function
n = -5 : 15; % Discrete time index
x = [n == 0] + 2 * [n == 4] - 3 * [n == 8]; % Input signal
y = filter([1/2, 1, 1/2], [1], x);
y(end+1) = 0;
y = y(2:end); % Left shift by 1 unit
subplot(212)
hold on;
stem(n, x, 'filled')
stem(n, y, 'filled')
hold off;
title('Bilinear interpolator response', 'Ashrith 200902016')
legend('Input x[n]', 'Output y[n]')
xlabel('n'), ylabel('Amplitude')
Example-3
%% Experiment - 2
% Example - 3
clc;
clear;
figure;
%% Linearity property of LSI systems
n = -100 : 100; % Discrete time index
f_1 = 0.01; % Normalised frequency 1
f_2 = 0.02; % Normalised frequency 2
c_1 = 2;
c_2 = 3;
NUM = [2.2403, 2.4908, 2.2403]; % Numerator coefficients of T[z]
DEN = [1, -0.4, 0.75]; % Denominator coefficients of T[z]
x_1 = cos(2 * pi * f_1 * n);
x_2 = cos(2 * pi * f_2 * n);
x = c_1 * x_1 + c_2 * x_2; % Linear combination of x_1 and x_2
y_1 = filter(NUM, DEN, x_1);
y_2 = filter(NUM, DEN, x_2);
y_c = c_1 * y_1 + c_2 * y_2; % Output of combined individual outputs
y = filter(NUM, DEN, x); % Output of combined inputs
y_d = y - y_c;
hold on;
stem(n, y_c, 'filled')
stem(n, y, 'filled')
stem(n, y_d, 'filled')
hold off;
title('Linearity property of LSI systems', 'Ashrith 200902016')
legend('y_c', 'y', 'y_d')
xlabel('n'), ylabel('Amplitude')
Example-4
%% Experiment - 2
% Example - 4
clc;
clear;
figure;
%% Shift Invariant property of LSI systems
n = 0 : 100; % Discrete time index
k = 10; % Delay
f_1 = 0.01; % Normalised frequency 1
f_2 = 0.02; % Normalised frequency 2
c_1 = 2;
c_2 = 3;
x = c_1 * cos(2 * pi * f_1 * n) + c_1 * cos(2 * pi * f_2 * n); % Input sequence
x_d = x(k+1:end); % Delayed input sequence
NUM = [2.2403, 2.4908, 2.2403]; % Numerator coefficients of T[z]
DEN = [1, -0.4, 0.75]; % Denominator coefficients of T[z]
y = filter(NUM, DEN, x); % Response of system for input sequence
y_d = y(k+1:end); % Delayed response sequence
y_di = filter(NUM, DEN, x_d); % Response of system for delayed input
d = y_d - y_di; % Difference
hold on;
stem(y_di, 'filled')
stem(y_d, 'filled')
stem(d, 'filled')
hold off;
title('Shift Invariant property of LSI systems', 'Ashrith 200902016')
legend('y_{di}', 'y_d', 'd')
xlabel('n'), ylabel('Amplitude')
Example-5
%% Experiment - 2
% Example - 5
clc;
clear;
figure;
%% M-point Moving Average Filter (Smoothing FIR Filter)
n = -50 : 100; % Discrete time index
f_1 = 0.01;
f_2 = 0.95;
s_1 = cos(2 * pi * f_1 * n); % Low frequency signal
s_2 = cos(2 * pi * f_2 * n); % High frequency signal
x = s_1 + s_2; % Input sequence
Ms = [3, 5, 7]; % M-point Moving Average
for M = Ms
NUM = 1/M * ones(1, M); % Numerator coefficients of T[z]
DEN = [1]; % Denominator coefficients of T[z]
y_M = filter(NUM, DEN, x);
subplot(length(Ms), 1, find(M == Ms))
hold on;
stem(n, x, 'filled')
stem(n, s_1, 'filled')
stem(n, y_M, 'filled')
hold off;
legend('x', 's_1', 'y')
title(M + "-point Moving Average Filter (Smoothing FIR Filter)", 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude')
end
Example-6
%% Experiment - 2
% Example - 6
clc;
clear;
figure;
%% Input signals
n = -20 : 20; % Discrete time index
u = ge(n, 0);
u5 = ge(n, 5);
u10 = ge(n, 10);
u_1 = ge(n, -1);
x1 = u - u10;
range_x1 = n(x1 ~= 0);
start_index_x1 = range_x1(1);
end_index_x1 = range_x1(end);
x2 = u_1 - u5;
range_x2 = n(x2 ~= 0);
start_index_x2 = range_x2(1);
end_index_x2 = range_x2(end);
%% Convolution (x1 * x2)
flip_x2 = fliplr(x2); % x2[-n]
range_flip_x2 = n(flip_x2 ~= 0);
start_index_flip_x2 = range_flip_x2(1);
end_index_flip_x2 = range_flip_x2(end);
flip_x2 = flip_x2(find(start_index_flip_x2 == n) : find(end_index_flip_x2 == n));
x = zeros(1, length(n));
for i = start_index_x1 + start_index_x2 : end_index_x1 + end_index_x2
temp = zeros(1, length(n));
temp(find(start_index_x2 + i == n) : find(end_index_x2 + i == n)) = flip_x2;
s = sum(x1 .* temp);
x(n == i) = s;
subplot(211)
stem(n, x1), hold on, stem(n, temp, 'r'), hold off
title("Input signals x1 and x2", 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude'), legend('x1[m]', 'x2[n-m]')
subplot(212)
stem(n, x, 'k')
title('x[n] = x1[n] \ast x2[n]', 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude')
pause(0.5)
end
pause(2)
%% Convolution (x2 * x1)
flip_x1 = fliplr(x1); % x1[-n]
range_flip_x1 = n(flip_x1 ~= 0);
start_index_flip_x1 = range_flip_x1(1);
end_index_flip_x1 = range_flip_x1(end);
flip_x1 = flip_x1(find(start_index_flip_x1 == n) : find(end_index_flip_x1 == n));
x = zeros(1, length(n));
for i = start_index_x1 + start_index_x2 : end_index_x1 + end_index_x2
temp = zeros(1, length(n));
temp(find(start_index_x1 + i == n) : find(end_index_x1 + i == n)) = flip_x1;
s = sum(x2 .* temp);
x(n == i) = s;
subplot(211)
stem(n, x2), hold on, stem(n, temp, 'r'), hold off
title("Input signals x1 and x2", 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude'), legend('x2[m]', 'x1[n-m]')
subplot(212)
stem(n, x, 'k')
title('x[n] = x2[n] \ast x1[n]', 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude')
pause(0.5)
end
Example-7
%% Experiment - 2
% Example - 7
clc;
clear;
figure;
%% Input signals
n = -20 : 20; % Discrete time index
u = ge(n, 0);
u5 = ge(n, 5);
u10 = ge(n, 10);
u_1 = ge(n, -1);
x1 = u - u10;
x2 = u_1 - u5;
%% Convolution (x1 * x2), using conv()
x_12 = conv(x1, x2);
subplot(211)
stem(x_12, 'k')
title('x[n] = x1[n] \ast x2[n]', 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude')
%% Convolution (x1 * x2), using conv()
x_21 = conv(x2, x1);
subplot(212)
stem(x_21, 'k')
title('x[n] = x2[n] \ast x1[n]', 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude')
Example-8
%% Experiment - 2
% Example - 8
clc;
clear;
figure;
%% M-point Moving Average Filter (Smoothing FIR Filter)
n = -50 : 100; % Discrete time index
f_1 = 0.01;
f_2 = 0.95;
s_1 = cos(2 * pi * f_1 * n); % Low frequency signal
s_2 = cos(2 * pi * f_2 * n); % High frequency signal
x = s_1 + s_2; % Input sequence
Ms = [3, 5, 7]; % M-point Moving Average
for M = Ms
NUM = 1/M * ones(1, M); % Numerator coefficients of T[z]
DEN = [1]; % Denominator coefficients of T[z]
h = impz(NUM, DEN); % Impulse response
y_M = conv(x, h);
subplot(length(Ms), 1, find(M == Ms))
hold on;
stem(x, 'filled')
stem(s_1, 'filled')
stem(y_M, 'filled')
hold off;
legend('x', 's_1', 'y')
title(M + "-point Moving Average Filter (Smoothing FIR Filter)", 'Ashrith 200902016')
xlabel('n'), ylabel('Amplitude')
end
Exercises
Exercise-1
%% Experiment - 2
% Exercise - 1
clc;
clear;
figure;
n = -100 : 100; % Discrete time index
NUM = [2.2403, 2.4908, 2.2403]; % Numerator coefficients of T[z]
DEN = [1, -0.4, 0.75]; % Denominator coefficients of T[z]
x = [n == 0]; % delta[n]
h = filter(NUM, DEN, x);
stem(n, h, 'filled')
title('Impulse response of LSI system', 'Ashrith 200902016')
legend('h'), xlabel('n'), ylabel('Amplitude')
Exercise-2
%% Experiment - 2
% Exercise - 2
clc;
clear;
figure;
n = -100 : 100; % Discrete time index
NUM = [2.2403, 2.4908, 2.2403]; % Numerator coefficients of T[z]
DEN = [1, -0.4, 0.75]; % Denominator coefficients of T[z]
h = impz(NUM, DEN);
stem(h, 'filled')
title('Impulse response of LSI system', 'Ashrith 200902016')
legend('h'), xlabel('n'), ylabel('Amplitude')
Exercise-3
%% Experiment - 2
% Exercise - 3
clc;
clear;
% figure;
n = -100 : 100; % Discrete time index
NUM = [1, -0.8]; % Numerator coefficients of T[z]
DEN = [1, 1.5, 0.9]; % Denominator coefficients of T[z]
sys = filt(NUM, DEN) % Define the system
[p, z] = pzmap(sys); % Calculate poles and zeros
stable = all(abs(p) < 1) % Check whether all poles lie within unit circle
Exercise-4
%% Experiment - 2
% Exercise - 4
clc;
clear;
figure;
n = -100 : 100; % Discrete time index
NUM = [1, -4, 3]; % Numerator coefficients of T[z]
DEN = [1, -1.7, 1]; % Denominator coefficients of T[z]
h = impz(NUM, DEN);
sys = filt(NUM, DEN) % System
[p, z] = pzmap(sys); % Poles and Zeros
stable = all(abs(p) < 1) % Check whether all poles lie within unit circle
stem(h, 'filled')
title('Impulse response of LSI system', 'Ashrith 200902016')
legend('h'), xlabel('n'), ylabel('Amplitude')
Exercise-5
%% Experiment - 2
% Exercise - 5
clc;
clear;
figure;
%% (a)
n = -100 : 100; % Discrete time index
NUM_a = [1, 2]; % Numerator coefficients of T[z]
DEN_a = [1, 0.8, 0.12]; % Denominator coefficients of T[z]
h_a = impz(NUM_a, DEN_a); % Impulse response
subplot(211)
stem(h_a, 'filled')
title('(a) Impulse response of LSI system', 'Ashrith 200902016')
legend('h'), xlabel('n'), ylabel('Amplitude')
%% (b)
n = -100 : 100; % Discrete time index
NUM_b = [1, 1]; % Numerator coefficients of T[z]
DEN_b = [1, -0.2, -0.15]; % Denominator coefficients of T[z]
h_b = impz(NUM_b, DEN_b); % Impulse response
subplot(212)
stem(h_b, 'filled')
title('(b) Impulse response of LSI system', 'Ashrith 200902016')
legend('h'), xlabel('n'), ylabel('Amplitude')
Exercise-6
%% Experiment - 2
% Exercise - 6
clc;
clear;
figure;
%% (a)
n = 0 : 10; % Discrete time index
NUM = [3, -2, 4]; % Numerator coefficients of T[z]
DEN = [1]; % Denominator coefficients of T[z]
h = impz(NUM, DEN);
subplot(211)
stem(h, 'filled')
title('Impulse response of LSI system', 'Ashrith 200902016')
legend('h'), xlabel('n'), ylabel('Amplitude')
%% (b)
n = 0 : 2; % Discrete time index
x = [1, -1, 3]; % Input signal
NUM = [3, -2, 4]; % Numerator coefficients of T[z]
DEN = [1]; % Denominator coefficients of T[z]
h = impz(NUM, DEN); % Impulse response
y_c = conv(x, h);
y_f = filter(NUM, DEN, x);
subplot(212)
hold on
stem(y_c, 'filled')
stem(y_f, 'filled')
hold off
title('Response of LSI system', 'Ashrith 200902016')
legend('y_c', 'y_f'), xlabel('n'), ylabel('Amplitude')
Exercise-7
%% Experiment - 2
% Exercise - 7
clc;
clear;
figure;
n = 0 : 10; % Discrete time index
x = [n == 0] + 3 * [n == 1] + 4 * [n == 3]; % Input signal
h = (0.5 .^ n) .* (ge(n, 0) - ge(n, 5)); % Impulse response
y = conv(x, h); % System output
subplot(311)
stem(x, 'filled')
title('Input signal', 'Ashrith 200902016')
legend('x[n]'), xlabel('n'), ylabel('Amplitude')
subplot(312)
stem(h, 'filled')
title('Impulse response of LSI system', 'Ashrith 200902016')
legend('h[n]'), xlabel('n'), ylabel('Amplitude')
subplot(313)
stem(y, 'filled')
title('Response of LSI system', 'Ashrith 200902016')
legend('y[n]'), xlabel('n'), ylabel('Amplitude')
Last updated