Example 1: DFT of Sine Waveform: (One Cycle, Two Cycles and Seven Cycles)
Example 1: DFT of Sine Waveform: (One Cycle, Two Cycles and Seven Cycles)
N = 64;
n = 0:N-1;
w = 2*pi/N;
x1 = sin(n*w);
subplot(321); stem(x1); title('input signal, one cycle');
xlabel('time index, n \rightarrow'); ylabel('x1(n) \rightarrow');
X1k = fft(x1);
subplot(322); stem(abs(X1k)); title('DFT of input signal, non-zero at k=1 and k=63');
xlabel('frequency index, k \rightarrow'); ylabel('X1(k) \rightarrow');
x2 = sin(2*n*w);
subplot(323); stem(x2); title('input signal, two cycles');
xlabel('time index, n \rightarrow'); ylabel('x2(n) \rightarrow');
X2k = fft(x2);
subplot(324); stem(abs(X2k)); title('DFT of input signal, non-zero at k=2 and k=62');
xlabel('frequency index, k \rightarrow'); ylabel('X2(k) \rightarrow');
x3 = sin(7*n*w);
subplot(325); stem(x3); title('input signal, seven cycles');
xlabel('time index, n \rightarrow'); ylabel('x3(n) \rightarrow');
X3k = fft(x3);
subplot(326); stem(abs(X3k)); title('DFT of input signal, non-zero at k=7 and k=57');
xlabel('frequency index, k \rightarrow'); ylabel('X3(k) \rightarrow');
input signal, one cycle DFT of input signal, non-zero at k=1 and k=63
1 40
0.5 30
0 20
X1(k)
x1(n)
-0.5 10
-1 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
input signal, two cycles DFT of input signal, non-zero at k=2 and k=62
1 40
0.5 30
0 20
X2(k)
x2(n)
-0.5 10
-1 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
input signal, seven cycles DFT of input signal, non-zero at k=7 and k=57
1 40
0.5 30
0 20
X3(k)
x3(n)
-0.5 10
-1 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
x1 = sin(n*w) + 5;
subplot(221); stem(x1);
title('one cycle added with 5 dc component, i.e., every sample added with value 5 (64x5 = 320)');
xlabel('time index, n \rightarrow'); ylabel('x1(n) \rightarrow');
X1k = fft(x1);
subplot(222); stem(abs(X1k));
title('DFT of input signal, non-zero at k=1 and k=63 with DC component 320');
xlabel('frequency index, k \rightarrow'); ylabel('X1(k) \rightarrow');
x2 = sin(2*n*w) + (4*sin(7*n*w)) + 3;
subplot(223); stem(x2);
title('input signal, sin(2*n*w) + (4*sin(7*n*w)) + 3');
xlabel('time index, n \rightarrow'); ylabel('x2(n) \rightarrow');
X2k = fft(x2);
subplot(224); stem(abs(X2k));
title('DFT of input signal, non-zero at k=2&62 and k=7&57 with DC component 3x64=192');
xlabel('frequency index, k \rightarrow'); ylabel('X2(k) \rightarrow');
one cycle added with 5 dc component, i.e., every sample added with value 5 (64x5 = 320) DFT of input signal, non-zero at k=1 and k=63 with DC component 320
6 350
5 300
250
4
200
3
X1(k)
x1(n)
150
2
100
1 50
0 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
input signal, sin(2*n*w) + (4*sin(7*n*w)) + 3 DFT of input signal, non-zero at k=2&62 and high peak at k=7&57 with DC component 3x64=192
8 200
6
150
4
100
X2(k)
x2(n)
50
0
-2 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
subplot(221); stem(x);
title('input signal (N=32), sampled at Fs/2 which is the Nyqusit/highest freq');
xlabel('time index, n \rightarrow'); ylabel('x(n) \rightarrow');
subplot(222); stem(Xk);
title('peak at Fs/2, i.e., at k*Fs/N = 16*Fs/32 where differences are accumulated');
xlabel('frequency index, k \rightarrow'); ylabel('X(k) \rightarrow');
N1 = 128;
y = zeros(N1,1);
y(1) = 1;
for n1 = 2:N1
y(n1) = -1*y(n1-1);
end
Yk = fft(y);
subplot(223); stem(y);
title('input signal (N=128), sampled at Fs/2 which is the Nyqusit/highest freq');
xlabel('time index, n \rightarrow'); ylabel('y(n) \rightarrow');
subplot(224); stem(Yk);
title('peak at Fs/2, i.e., at k*Fs/N = 64*Fs/128 where differences are accumulated');
xlabel('frequency index, k \rightarrow'); ylabel('Y(k) \rightarrow');
input signal (N=32), sampled at Fs/2 which is the Nyqusit/highest freq peak at Fs/2, i.e., at k*Fs/N = 16*Fs/32 where differences are accumulated
1 35
30
0.5
25
20
0
X(k)
x(n)
15
10
-0.5
5
-1 0
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
time index, n frequency index, k
input signal (N=128), sampled at Fs/2 which is the Nyqusit/highest freq peak at Fs/2, i.e., at k*Fs/N = 64*Fs/128 where differences are accumulated
1 140
120
0.5
100
80
0
Y(k)
y(n)
60
40
-0.5
20
-1 0
0 20 40 60 80 100 120 140 0 20 40 60 80 100 120 140
time index, n frequency index, k
x = 7*cos(3*n*w) + 13*sin(6*n*w);
subplot(321); plot(x); title('original signal');
xlabel('time index, n \rightarrow'); ylabel('x(n) \rightarrow');
Xk = fft(x);
subplot(322); stem(abs(Xk)); title('DFT peaks at k = 3 and 6');
xlabel('frequency index, k \rightarrow'); ylabel('X(k) \rightarrow');
xn = x + 10*randn(1,N);
subplot(323); plot(xn); title('original signal+noise');
xlabel('time index, n \rightarrow'); ylabel('xn(n) \rightarrow');
Xnk = fft(xn);
subplot(324); stem(abs(Xnk)); title('DFT peaks at k = 3 and 6');
xlabel('frequency index, k \rightarrow'); ylabel('Xn(k) \rightarrow');
xr = ifft(Xnk);
subplot(326); plot(real(xr)); title('recovered signal');
xlabel('time index, n \rightarrow'); ylabel('xr(n) \rightarrow');
original signal DFT peaks at k = 3 and 6
20 2000
10 1500
0 1000
X(k)
x(n)
-10 500
-20 0
0 50 100 150 200 250 300 0 50 100 150 200 250 300
time index, n frequency index, k
original signal+noise DFT peaks at k = 3 and 6
40 2000
20 1500
0 1000
Xn(k)
xn(n)
-20 500
-40 0
0 50 100 150 200 250 300 0 50 100 150 200 250 300
time index, n frequency index, k
DFT peaks at k = 3 and 6 are to be retained recovered signal
2000 20
1500 10
1000 0
Xn(k)
xr(n)
500 -10
0 -20
0 50 100 150 200 250 300 0 50 100 150 200 250 300
frequency index, k time index, n
>> fft(x)
>> y = [4 0 3 0 2 0 1 0];
>> fft(y)
Proof:
N N
1 1
2 2
x ( 2n) W x(2n 1)W
(2n)k (2n 1)k
N N
Y(k) = n 0 n 0
DFT of even DFT of odd
N N
1 1
2 2
x ( 2n) W N
nk
0. W N
(2n 1)k
= n 0 2 n 0
N
1
2
x ( 2n) W N
nk
Similarly,
>> y = [4 0 0 3 0 0 2 0 0 1 0 0];
>> fft(y)
ans = { 10, 2-2j, 2, 2+2j, 10, 2-2j, 2, 2+2j, 10, 2-2j, 2, 2+2j }
>> y = [4 3 2 1 4 3 2 1];
>> fft(y)
Proof:
N
1
2 N 1
x ( n) W x ( n) W
nk nk
N N
n 0 N
n
Y(k) = 2
DFT of first 4 samples DFT of second 4 samples
N N N N
1 n N 1 1 n 1
2 2 N 2 2 N
x(n)WN x(n)WN
nk (n ) k nk nk k
x(n) WN 2 x(n) WN WN 2
n 0 N N n 0 n0
n
= 2 2 =
N N N
1 n 1 1
2 2 2
x ( n) W N
nk
x ( n) W N
nk
(-1) k x ( n) W N
nk
{1 (1) k }
Y(k) = n0 n0 = n 0
k even :
N N
1 1
2 2
x ( n) W x ( n) W
nk nk
N {1 (1) 2 k } N {1 1}
Y(2k) = n 0 = n 0 = 2 X(k)
k odd :
N N
1 1
2 2
x ( n) W x ( n) W
nk nk
N {1 (1) 2 k 1 } N {1 1}
Y(2k +1) = n0 = n 0 =0
Y(k) = X(k), k = 0 to 7
= { 2X(0), 0, 2X(1), 0, 2X(2), 0, 2X(3), 0}
____________________________________
Similarly,
>> y = [4 3 2 1 4 3 2 1 4 3 2 1];
>> fft(y)
dc { 2, 2, 2, 2 } { 8, 0, 0, 0 }
{ 8, 8, 8, 8 } { 32, 0, 0, 0}
{ 2, -2, 2, -2 } { 0, 0, 8, 0 }
differences are accumulated at Fs/2, i.e., at k=4/2=2
x = sin(n*w);
subplot(321); stem(x); title('input signal, one cycle');
xlabel('time index, n \rightarrow'); ylabel('x(n) \rightarrow');
Xk = fft(x);
subplot(322); stem(abs(Xk)); title('DFT of input signal, X(1) = X(32-1) = X(31) = 16');
xlabel('frequency index, k \rightarrow'); ylabel('X(k) \rightarrow');
xi = [x ; zeros(1,N)];
xi = reshape(xi, 2*N, 1);
subplot(323); stem(xi); title('zero inserted signal');
xlabel('time index, n \rightarrow'); ylabel('xi(n) \rightarrow');
Xik = fft(xi);
subplot(324); stem(abs(Xik)); title('Xi(k) = X(k), where k = 0 to 63 (periodicity property)');
% Xi(0) = X(0), Xi(1) = X(1), Xi(2) = X(2).... Xi(31) = X(31), Xi(32) = X(0), % Xi(33) = X(1), Xi(34) = X(2), .... Xi(63) = X(31).
xlabel(' frequency index, k \rightarrow'); ylabel('Xi(k) \rightarrow');
Xik(32) = 0;
Xik(34) = 0;
subplot(325); stem(abs(fi));
title('Interpolation with one cycle, i.e., k = 1 and k = 63 values are to be retained');
xlabel(' frequency index, k \rightarrow'); ylabel('Y(k) \rightarrow');
xi = 2*real(ifft(fi));
subplot(326); stem(xi); title('Interpolated output signal');
xlabel('time index, n \rightarrow'); ylabel('y(n) \rightarrow');
input signal, one cycle DFT of input signal, X(1) = X(32-1) = X(31) = 16
1 20
0.5 15
0 10
X(k)
x(n)
-0.5 5
-1 0
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
time index, n frequency index, k
zero inserted signal Xi(k) = X(k), where k = 0 to 63 (periodicity property)
1 20
0.5 15
0 10
Xi(k)
xi(n)
-0.5 5
-1 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
Interpolation with one cycle, i.e., k = 1 and k = 63 values are to be retained Interpolated output signal
20 1
15 0.5
10 0
Y(k)
y(n)
5 -0.5
0 -1
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
frequency index, k time index, n
x = sin(2*n*w);
subplot(321); stem(x); title('input signal, two cycles');
xlabel('time index, n \rightarrow'); ylabel('x(n) \rightarrow');
Xk = fft(x);
subplot(322); stem(abs(Xk)); title('DFT of input signal, X(2) = X(32-2) = X(30) = 16');
xlabel('frequency index, k \rightarrow'); ylabel('X(k) \rightarrow');
xi = [x ; zeros(1,N)];
xi = reshape(xi, 2*N, 1);
subplot(323); stem(xi); title('zero inserted signal');
xlabel('time index, n \rightarrow'); ylabel('xi(n) \rightarrow');
Xik = fft(xi);
subplot(324); stem(abs(Xik)); title('Xi(k) = X(k), where k = 0 to 63 (periodicity property)');
% Xi(0) = X(0), Xi(1) = X(1), Xi(2) = X(2).... Xi(31) = X(31), Xi(32) = X(0),
% Xi(33) = X(1), Xi(34) = X(2), .... Xi(63) = X(31).
xlabel('frequency index, k \rightarrow'); ylabel('Xi(k) \rightarrow');
Xik(31) = 0;
Xik(35) = 0;
subplot(325); stem(abs(Xik));
title('Interpolation with one cycle, i.e., k = 1 and k = 63 values are to be retained');
xlabel('frequency index, k \rightarrow'); ylabel('Y(k) \rightarrow');
xi = 2*real(ifft(Xik));
subplot(326); stem(xi); title('Interpolated output signal');
xlabel('time index, n \rightarrow'); ylabel('y(n) \rightarrow');
input signal, two cycles DFT of input signal, X(2) = X(32-2) = X(30) = 16
1 20
0.5 15
0 10
X(k)
x(n)
-0.5 5
-1 0
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
time index, n frequency index, k
zero inserted signal Xi(k) = X(k), where k = 0 to 63 (periodicity property)
1 20
0.5 15
0 10
Xi(k)
xi(n)
-0.5 5
-1 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
time index, n frequency index, k
Interpolation with one cycle, i.e., k = 1 and k = 63 values are to be retained Interpolated output signal
20 1
15 0.5
10 0
Y(k)
y(n)
5 -0.5
0 -1
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
frequency index, k time index, n