Experiment-3

Exercises

Exercise-1

%% Experiment - 3
% Exercise - 1
clc;
clear;
figure;

%% Input signal
n = 1 : 200;  % Discrete time index
N = length(n);  % N in N-point DFT
c_1 = 2; c_2 = 2;
w_1 = 0.01; w_2 = 0.05;
x = c_1 * sin(w_1 * n) + c_2 * sin(w_2 * n);

subplot(311)
stem(n, x)
title("Input signal x[n] = c_1sin(w_1n)+c_2sin(w_2n)", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x')

%% Fourier transform
y = fft(x, N);

subplot(312)
stem(n, abs(y), 'b')
title("Magnitude spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

subplot(313)
stem(n, angle(y), 'r')
title("Phase spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

Exercise-2

%% Experiment - 3
% Exercise - 2
clc;
clear;
figure;

%% Input signal
N = 400;  % N in N-point DFT
n = 1 : N;  % Discrete time index
w = 1 : N;  % Discrete frequency index
c_1 = 2; c_2 = 2;
w_1 = 0.01; w_2 = 0.09;  % Normalised frequencies
x = c_1 * sin(w_1 * n) + c_2 * sin(w_2 * n);

subplot(211)
stem(n, x)
title("Input signal x[n] = c_1sin(w_1n)+c_2sin(w_2n)", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x')

%% Time-shifting property of DTFT
k = 10;  % Delay
x_d = x(k+1 : end);  % Delayed input signal
y_di = fft(x_d, N);

y = fft(x, N);
y_d = exp(-i * k .* w) .* y;

window = 1 : length(n) - k;
d = y_d(window) - y_di(window);

subplot(212)
hold on;
stem(window, y_d(window), 'b')
stem(window, d(window), 'r')
hold off;
title("Time-shifting property of DTFT", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('y_d', 'd')

Exercise-3

%% Experiment - 3
% Exercise - 3
clc;
clear;
figure;

%% Input signal
N = 400;  % N in N-point DFT
n = 1 : N;  % Discrete time index
w = 1 : N;  % Discrete frequency index
c_1 = 2; c_2 = 2;
w_1 = 0.01; w_2 = 0.05;  % Normalised frequencies
x = c_1 * sin(w_1 * n) + c_2 * sin(w_2 * n);

subplot(211)
stem(n, x)
title("Input signal x[n] = c_1sin(w_1n)+c_2sin(w_2n)", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x')

%% Frequency-shifting property of DTFT
k = 10;  % Delay
y = fft(x, N);
y_d = y(k+1 : end);  % Delayed output signal

x_d = exp(i * k .* w) .* x;
y_di = fft(x_d, N);

window = 1 : length(n) - k;
d = y_d(window) - y_di(window);

subplot(212)
hold on;
stem(window, y_d(window), 'b')
stem(window, d(window), 'r')
hold off;
title("Frequency-shifting property of DTFT", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('y_d', 'd')

Exercise-4

%% Experiment - 3
% Exercise - 4
clc;
clear;
figure;

%% Input signal
n = 1 : 100;  % Discrete time index
N = 2 * length(n) - 1;  % N in N-point DFT
c_1 = 2; c_2 = 2;
w_1 = 0.1; w_2 = 0.15;  % Normalised frequencies
x_1 = c_1 * sin(w_1 * n);
x_2 = c_2 * sin(w_2 * n);

subplot(211)
hold on;
stem(n, x_1)
stem(n, x_2)
hold off;
title("Input signals", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x_1[n]', 'x_2[n]')

%% Convolution property of DTFT
y_1 = fft(x_1, N);
y_2 = fft(x_2, N);

x_conv = conv(x_1, x_2);
y_x_conv = fft(x_conv, N);

y_y1_y2 = y_1 .* y_2;

window = 1 : N;
d = y_x_conv(window) - y_y1_y2(window);

subplot(212)
hold on;
stem(window, y_x_conv(window), 'b')
stem(window, d(window), 'r')
hold off;
title("Convolution property of DTFT", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('y_d', 'd')

Exercise-5

%% Experiment - 3
% Exercise - 5
clc;
clear;
figure;

%% Input signal
n = 1 : 200;  % Discrete time index
N = length(n);  % N in N-point DFT
F_s = 200;  % Sampling frequency
F = 30;  % Frequency
f = F / F_s;  % Normalised frequency
x = sin(f * n);

subplot(311)
stem(n, x)
title("Input signal x[n]", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x')

%% Discrete Fourier Transform
y = fft(x, N);

subplot(312)
stem(n, abs(y), 'b')
title("Magnitude spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

subplot(313)
stem(n, angle(y), 'r')
title("Phase spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

Exercise-6

%% Experiment - 3
% Exercise - 6
clc;
clear;
figure;

%% Input signal
n = 1 : 100;  % Discrete time index
N = length(n);  % N in N-point DFT
x = ecg(N);

subplot(311)
plot(n, x)
title("Input ECG signal x[n]", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x')

%% Discrete Fourier Transform
y = fft(x, N);

subplot(312)
stem(n, abs(y), 'b')
title("Magnitude spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

subplot(313)
stem(n, angle(y), 'r')
title("Phase spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

%% Function definitions
function x = ecg(L)
    a0 = [0,  1, 40,  1,   0, -34, 118, -99,   0,   2,  21,   2,   0,   0,   0];
    d0 = [0, 27, 59, 91, 131, 141, 163, 185, 195, 275, 307, 339, 357, 390, 440];
    a = a0 / max(a0);
    d = round(d0 * L / d0(15));
    d(15) = L;
    for i = 1:14
        m = d(i) : d(i+1) - 1;
        slope = (a(i+1) - a(i)) / (d(i+1) - d(i));
        x(m+1) = a(i) + slope * (m - d(i));
    end
end

Exercise-7

%% Experiment - 3
% Exercise - 7
clc;
clear;
figure;

%% Input signal
n = 1 : 100;  % Discrete time index
N = length(n);  % N in N-point DFT
x = ecg(N);

subplot(411)
plot(n, x)
title("Input ECG signal x[n]", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x')

%% Discrete Fourier Transform
y = fft(x, N);

subplot(412)
stem(n, abs(y), 'b')
title("Magnitude spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

subplot(413)
stem(n, angle(y), 'r')
title("Phase spectrum", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude')

%% Reconstruction from DFT
x_r = ifft(y, N);

subplot(414)
plot(n, x_r)
title("Reconstructed ECG signal x_r[n]", "Ashrith 200902016")
xlabel('n'), ylabel('Amplitude'), legend('x_r')

%% Function definitions
function x = ecg(L)
    a0 = [0,  1, 40,  1,   0, -34, 118, -99,   0,   2,  21,   2,   0,   0,   0];
    d0 = [0, 27, 59, 91, 131, 141, 163, 185, 195, 275, 307, 339, 357, 390, 440];
    a = a0 / max(a0);
    d = round(d0 * L / d0(15));
    d(15) = L;
    for i = 1:14
        m = d(i) : d(i+1) - 1;
        slope = (a(i+1) - a(i)) / (d(i+1) - d(i));
        x(m+1) = a(i) + slope * (m - d(i));
    end
end

Exercise-8

%% Experiment - 3
% Exercise - 8
clc;
clear;
figure;

%% Frequency response
NUM = [1, 0.5];
DEN = [1, -1.8, 0.81];
Fs = 512;
sys = filt(NUM, DEN);
freqz(NUM, DEN, Fs)
figure;
zplane(NUM, DEN)

Last updated