dce
2011
Chương 5
Biến đổi Fourier rời rạc (DFT)
BK
TP.HCM
©2011, TS. Đinh Đ ức Anh Vũ
dce
2011
Giới thiệu về DFT
•
Biến đổi Fourier liên tục
x(n) = 0.8nu(n)
x(n)
F
X (ω ) =
Miền thời gian
Miền tần số
∞
− j ωn
x
(
n
)
e
∑
n = −∞
•
Vấn đề: X(ω) liên tục theo tần số ω → không thích hợp cho việc tính toán trên máy
tính
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
2
dce
2011
Lấy mẫu miền tần số
X(ω)
Lấy
mẫu
N=10
X (k ) ≡ X (ω =
2π
N
N=10
k)
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
3
dce
2011
Lấy mẫu miền tần số
X (ω ) ω = 2πk / N = X (
X (k )
= +
2π
N
−1
k) =
∑ x ( n)e
− j 2Nπ kn
∞ lN + N −1
∑ ∑
∑ x ( n )e
− j 2πkn / N
k = 0,1,..., N − 1
n = −∞
n=− N
=
∞
x ( n)e
N −1
+ ∑ x ( n)e
− j 2Nπ kn
n =0
+
2 N −1
∑ x ( n)e
− j 2Nπ kn
+
n= N
− j 2Nπ kn
l = −∞ n =lN
∞
− j 2Nπ kn
= ∑ ∑ x(n − lN ) e
n = 0 l = −∞
N −1
N −1
⇒ X ( k ) = ∑ x p ( n )e
− j 2Nπ kn
Thay n bằng (n-lN)
với
n =0
•
x p ( n) =
∞
∑ x(n − lN )
l = −∞
T/h xp(n) – lặp chu kỳ của x(n) mỗi N mẫu – t/h tuần hoàn với chu kỳ cơ bản N
N −1
x p (n) = ∑ ck e j 2πkn / N
n = 0,1,..., N − 1
k =0
1
ck =
N
DSP – Biến đổi DFT
N −1
− j 2πkn / N
x
n
e
(
)
∑ p
k = 0,1,..., N − 1
n =0
©2011, Đinh Đức Anh Vũ
4
dce
2011
Lấy mẫu miền tần số
1
ck = X ( k )
N
1 N −1
j 2Nπ kn
x p ( n ) = ∑ X ( k )e
N k =0
•
k = 0,1, , N − 1
n = 0,1, , N − 1
Có thể phục hồi t/h xp(n) từ các mẫu của phổ X(ω)
x(n)
x p ( n)
x ( n) =
0
n
0
L
0 ≤ n ≤ N −1
others
xp(n)
N>L
n
0
L N
xp(n)
N
alias
n
0
DSP – Biến đổi DFT
N
Khi N≥L, x(n) có thể được khôi phục
từ các mẫu phổ tần số tại ωk=2πk/N
©2011, Đinh Đức Anh Vũ
5
dce
2011
Lấy mẫu miền tần số
•
Có thể phục hồi X(ω) từ các mẫu X(k) với k = 0, 1,…, N-1
– Giả sử N ≥ L → x(n) = xp(n) khi 0 ≤ n ≤ N-1
N −1
1
x ( n) =
N
j 2πkn / N
X
k
e
(
)
∑
X (ω ) =
∑ x ( n )e
k =0
∞
n = −∞
− jωn
1
= ∑
n =0 N
N −1
N −1
∑ X ( k )e
k =0
1 N −1 − j (ω − 2πk / N ) n
= ∑ X (k ) ∑ e
N
k =0
n =0
1 N −1 − jωn 1 1 − e − jωN
P(ω ) = ∑ e
=
N n =0
N 1 − e − jω
sin(ωN / 2) − jω ( N −1) / 2
=
e
N sin(ω / 2)
k =0
1
2π
P( N k ) =
k = 1,2, , N − 1
0
j 2πkn / N
− jωn
e
N −1
DSP – Biến đổi DFT
N −1
X (ω ) = ∑ X (k ) P (ω − 2Nπ k )
N≥L
k =0
©2011, Đinh Đức Anh Vũ
6
dce
2011
Lấy mẫu miền tần số
1
x ( n) =
N
x(n)
có chiều dài L≤N
N −1
∑ X ( k )e
j 2Nπ kn
k =0
BĐ F
X (ω ) =
∞
∑ x ( n )e
N −1
− j ωn
n = −∞
X ( k ) = ∑ x ( n )e
k =0
N −1
1
P (ω ) =
N
Lấy mẫu
N −1
X (ω ) = ∑ X (k ) P (ω − ωk )
− j 2Nπ kn
n =0
DSP – Biến đổi DFT
Phục hồi
− j ωn
e
∑
k =0
ωk =
2π
N
k
Phục hồi
©2011, Đinh Đức Anh Vũ
7
dce
2011
Lấy mẫu miền tần số
•
Ví dụ: x(n) = anu(n), 0
– Phổ t/h được lấy mẫu tại các tần số ωk = 2πk/N, k=0, 1, …, N-1
∞
X (ω ) = ∑ a n e − jωn =
n =0
x p ( n) =
=
1
1 − ae − jω
X (k ) = X (
2πk
1
)=
1 − ae − j 2πk / N
N
∞
∑ x(n − lN )
l = −∞
0
∑a
l = −∞
a=0.8
n −lN
an
=
1− aN
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
8
dce
2011
Biến đổi Fourier rời rạc (DFT)
•
•
•
•
•
•
Chuỗi không tuần hoàn, năng lượng hữu hạn x(n)
Các mẫu tần số X(2πk/N), k = 0, 1,…, N-1 không đặc trưng cho x(n) khi
x(n) có chiều dài vô hạn
Nó đặc trưng cho chuỗi tuần hoàn, chu kỳ N xp(n)
xp(n) là lặp tuần ho , N − 1
tuần hoàn chu kỳ N
•
N −1
X ( k ) = ∑ x ( n )e
− j 2Nπ kn
n =0
k = 0,1, , N − 1
Với BĐ Fourier của chuỗi không chu kỳ
– DFT N điểm cho phổ vạch của chuỗi không chu kỳ x(n) nếu x(n) hữu hạn có
độ dài L ≤ N
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
15
dce
2011
DFT – Biểu diễn tín hiệu
Dạng vòng
Dạng thẳng
Dương
n
Âm
Chiều dương
n=1
-2 -1 0 1 2
n=0
n=–1
x(n) = {1 2 3 4}
x(n)
x(1)
4
3
2
x(2)
1
x(n)
Chiều âm
x(0)
n
0
1
2
DSP – Biến đổi DFT
3
x(3)
©2011, Đinh Đức Anh Vũ
16
dce
DFT – Biểu diễn tín hiệu theo vòng
2011
•
Chuỗi tuần hoàn chu kỳ N, mở rộng từ x(n)
Chuỗi có chiều dài hữu hạn từ x’p(n)
•
Quan hệ giữa x(n) và x’(n): dịch vòng
4
3
4
xp(n)
2
4
3
1
1
0 1 2 3
3
2
∑ x(n − lN − k )
l = −∞
'
p
x’(n) = x(n-k, MOD N) ≡ x((n-k))N
1
4
3
4
3
2
1
-4 -3 -2 -1 0 1 2 3 4 5 6 7
4
xp(n-2)
2
1
x’(n)
4
4
3
2
n = −∞
∞
x ( n) 0 ≤ n ≤ N − 1
x ' ( n) =
otherwise
0
•
x(n)
∑ x(n − lN )
x p ( n) =
x 'p (n) = x p (n − k ) =
Chuỗi dịch xp(n) đi k mẫu
•
∞
3
2
2
1
1
-2 -1 0 1 2 3 4 5 6 7 8 9
x(1)
x’(1)
2
4
3
2
1
0 1 2 3
DSP – Biến đổi DFT
x(2) 3
x(n)
1 x(0)
x’(2) 1
x’(n)
3 x’(0)
4
2
x(3)
©2011, Đinh Đức Anh Vũ
x’(3)
17
dce
2011
DFT – Tính đối xứng vòng
• Phép dịch vòng của một chuỗi N điểm tương đương với phép
dịch tuyến tính của chuỗi mở rộng tuần hoàn của nó
• Chuỗi N điểm là chẵn theo vòng nếu nó đối xứng qua điểm 0
trên vòng tròn
– i.e. x(N – n) = x(n), 0 ≤ n ≤ N – 1
• Chuỗi N điểm là lẻ theo vòng nếu nó phản đối xứng qua điểm
0 trên vòng tròn
– i.e. x(N – n) = – x(n), 0 ≤ n ≤ N – 1
• Đảo theo thời gian của chuỗi N điểm: đảo các mẫu của chuỗi
quanh điểm 0 trên vòng tròn
– i.e. x((– n))N = x(N – n), 0 ≤ n ≤ N – 1
– Phép đảo được thực hiện bằng cách vẽ x(n) theo chiều kim đồng hồ
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
18
dce
2011
DFT – Tính đối xứng vòng
•
Giả sử x(n) và BĐ DFT X(k) là t/h phức
– x(n) = xR(n) + jxI(n), 0≤n≤N–1
– X(k) = XR(k) + jXI(k), 0≤k≤N–1
1 N −1
2πkn
2πkn
xR ( n) = N ∑ [X R ( k ) cos N − X I ( k ) sin N ]
k =0
N −1
x ( n) = 1
[
X R ( k ) sin 2πNkn + X I ( k ) cos 2πNkn ]
∑
I
N k =0
Nếu x(n) thực: X(N-k) = X*(k) = X(–k)
N −1
2πkn
2πkn
X R ( k ) = ∑ [xR ( n) cos N + xI ( n) sin N ]
n =0
N −1
X ( k ) = − [x ( n) sin 2πkn − x ( n) cos 2πkn ]
∑
I
R
I
N
N
n =0
•
X ( N − k ) = X (k )
•
N −1
n =0
2πkn
N
1
x ( n) =
N
Nếu x(n) thực và lẻ: x(n) = –x(N–n) → XR(k) = 0
N −1
X (k ) = − j ∑ x(n) sin
•
∠X ( N − k ) = −∠X ( k )
Nếu x(n) thực và chẵn: x(n) = x(N–n) → XI(k) = 0
X (k ) = ∑ x(n) cos
•
và
n =0
2πkn
N
Nếu x(n) thuần ảo: x(n) = jxI(n)
N −1
X R ( k ) = ∑ xI (n) sin
n =0
DSP – Biến đổi DFT
2πkn
N
N −1
∑ X (k ) cos
k =0
1
x ( n) = j
N
N −1
2πkn
N
∑ X (k ) sin
k =0
2πkn
N
N −1
X I (k ) = ∑ xI (n) cos 2πNkn
n =0
©2011, Đinh Đức Anh Vũ
19
dce
2011
DFT – Tính chất
•
Tuần hoàn
•
Tuyến tính
•
Tổng chập vòng
DFTN
x ( n) ←
→ X ( k )
x ( n) = x ( n + N )
⇒
X (k ) = X (k + N )
∀n
∀k
DFTN
(
)
x
n
←
→ X 1 ( k )
1
DFTN
(
)
x
n
←
→ X 2 ( k )
2
DFTN
⇒ a1 x1 ( n) + a2 x2 ( n) ←
→ a1 X 1 ( k ) + a2 X 2 ( k )
DFTN
→ X 1 (k )
x1 ( n) ←
DFTN
x
(
n
)
←
→ X 2 ( k )
2
DFTN
⇒ x1 ( n) ⊗
→ X 1 (k ) X 2 (k )
N x2 ( n) ←
N Tổng chập vòng N điểm
N −1
x1 (n) ⊗
N x2 (n) = ∑ x1 (k ) x2 ((n − k )) N
n = 0,1, , N − 1
k =0
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
20
dce
2011
DFT – Tổng chập vòng
DFTN
x ( m)
→ X 1 (k )
x1 ( n) ←
DFTN
x2 ( n) ←→ X 2 ( k )
DFTN
→ X ( k ) = X 1 ( k ) X 2 (k )
x( m) ←
a =1
N
k
=
a
1 − a N
∑
a ≠1
k =0
1− a
N −1
j 2Nπ ( m − n − l )
Trong ñoù
a=e
a = 1, khi : m − n − l = pN , p ∈ Z
= IDFT { X ( k )}
N −1
1
=
N
∑ X ( k )e
1
=
N
N −1
∑X
1
=
N
N −1
N −1
− j 2Nπ kn
− j 2Nπ kl j 2Nπ km
x
n
e
x
l
e
(
)
(
)
∑
∑ 1
∑ 2
e
k =0 n =0
l =0
1
=
N
j 2Nπ km
k =0
k =0
1
( k ) X 2 ( k )e
j 2Nπ km
N −1
N −1
N −1
N −1
∑ x (n)∑ x (l )∑ e
n =0
1
l =0
2
j 2Nπ k ( m − n −l )
k =0
a ≠ 1 ⇒ a N = e j 2π ( m − n −l ) = 1 ⇒ 1 − a N = 0
N
⇒ ∑a =
k =0
0
N −1
k
m − n − l = pN ⇔ l = ((m − n)) N
otherwise
N −1
x(m) = ∑ x1 (n) x2 ((m − n)) N
m = 0,1, , N − 1
n =0
N −1
x(n) = ∑ x1 (k ) x2 ((n − k )) N
DSP – Biến đổi DFT
k =0
n = 0,1, , N − 1
©2011, Đinh Đức Anh Vũ
21
dce
2011
DFT – Tổng chập vòng
Ví dụ: cho x1(n) ={1^ 2 3 4} và x2(n) ={1^ 0
cách
•
–
–
2 1}. Tính x(n) = x1(n) N x2(n) theo 2
Dùng công thức định nghĩa
Dùng DFT và IDFT
x2(0) = 1
Dùng định nghĩa
x2(3) = 1
N −1
x(m) = ∑ x1 (n) x2 ((m − n)) N
m = 0,1, , N − 1
x1(2) = 3
x2(2) = 2
x1(n)
x2(2) = 2
x2(n)
x2(0) = 1
x2(0) = 1
x2((2-n))4
x1(3) = 4
x2(3) = 1
x2(3) = 1
x2(3) = 1
2
x2(2) = 2
x2((-n))4
x2(0) = 1
x2(1) = 0
DSP – Biến đổi DFT
6
x1(n)x2((-n))4 1
x(0) = 9
0
3 x1(n)x2((1-n))4 0
x(1) = 13
x2(1) = 0
x2(1) = 0
x1(0) = 1
x2(1) = 0
x2(2) = 2
n =0
x1(1) = 2
x2((1-n))4
2
x2(1) = 0
x2((3-n))4
x2(0) = 1
8
0
x2(2) = 2
3 x1(n)x2((2-n))4 2
x(2) = 9
4
4
x2(3) = 1
0 x1(n)x2((3-n))4 1
x(3) = 9
4
©2011, Đinh Đức Anh Vũ
22
dce
2011
DFT – Tổng chập vòng
Dùng DFT & IDFT
3
X 1 (k ) = ∑ x1 (n)e
X (k ) = X 1 (k ) X 2 (k )
− j 24π kn
= 1 + 2e
− j π2 k
+ 3e − jπk + 4e
n =0
k = 0,1,2,3
X 1 (0) = 1 + 2 + 3 + 4 = 10
X (1) = 1 + (−2 j ) + (−3) + (4 j ) = −2 + 2 j
1
X 1 (2) = 1 + (−2) + (+3) + (−4) = −2
X 1 (3) = 1 + (2 j ) + (−3) + (−4 j ) = −2 − 2 j
− j 32π k
k = 0,1,2,3
X (0) = 40
X (1) = (−2 + 2 j )(−1 + j ) = −4 j
X (2) = −4
X (3) = 4 j
k = 0,1,2,3
1 3
j 24π kn
x ( n ) = ∑ X ( k )e
4 k =0
1
jπ n
j 3π n
= 40 − 4 je 2 − 4e jπn + 4 je 2
4
n = 0,1,2,3
X 2 (0) = 1 + 2 + 1 = 4
X (1) = 1 + (−2) + ( j ) = −1 + j
2
X 2 (2) = 1 + 2 − 1 = 2
X 2 (3) = 1 + (−2) + (− j ) = −1 − j
x(0) = 9
x(1) = 13
x(2) = 9
x(3) = 9
3
X 2 (k ) = ∑ x2 (n)e
− j 24π kn
= 1 + 2e
− jπk
n =0
DSP – Biến đổi DFT
+e
− j 32π k
[
©2011, Đinh Đức Anh Vũ
]
23
dce
2011
DFT – Tính chất
•
Đảo vòng theo thời gian
DFTN
x(n) ←
→ X (k )
DFTN
⇒ x((−n)) N = x( N − n) ←
→ X ((−k )) N = X ( N − k )
•
Dịch vòng theo thời gian
DFTN
x(n) ←
→ X (k )
DFTN
⇒ x((n − l )) N ←
→ X (k )e − j 2πkl / N
•
Dịch vòng theo tần số
DFTN
x(n) ←
→ X (k )
DFTN
⇒ x(n)e j 2πnl / N ←
→ X ((k − l )) N
•
Liên hợp phức
DFTN
→ X (k )
x(n) ←
DFTN
x* (n) ←
→ X * ((− k )) N = X * ( N − k )
⇒ *
DFTN
x ((− n)) N = x* ( N − n) ←
→ X * (k )
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
24
dce
2011
DFT – Tính chất
•
Tương quan vòng
DFTN
x(n) ←
→ X (k )
DFTN
y (n) ←
→ Y (k )
~
~
~
⇒ r xy (l ) ←→ R xy (k ) = X (k )Y (k )
•
DFTN
*
với
N −1
r xy (l ) = ∑ x(n) y * ((n − l )) N
n =0
Nhân 2 chuỗi
DFTN
→ X 1 (k )
x1 ( n) ←
DFTN
←
→ X 2 ( k )
x
n
(
)
2
DFTN
⇒ x1 ( n) x2 ( n) ←
→ N1 X 1 ( k ) ⊗
N X 2 (k )
•
Định lý Parseval
DFTN
→ X (k )
x(n) ←
DFTN
→ Y (k )
y (n) ←
N −1
N −1
n =0
k =0
⇒ ∑ x(n) y * (n) = ∑ X (k )Y * (k )
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
25
dce
2011
DFT – Lọc tuyến tính
•
Y(ω) = H(ω)X(ω)
– Hàm liên tục theo tần số ω
– Khó thực hiện trên các máy tính số
→ DFT: một cách tính hiệu qủa của tổng chập miền thời gian
•
Lọc tuyến tính
– Tín hiệu ngắn
x(n)
x(n) chiều dài = L (n=0,1,…,L-1)
h(n) chiều dài = M (n=0,1,…,M-1)
h(n)
y(n)
y ( n) =
M −1
∑ h( k ) x ( n − k )
k =0
y(n) chiều dài N = M+L-1
Số mẫu phổ (tần số) cần thiết để biểu diễn duy nhất chuỗi y(n) ≥ L+M-1
Y(k) = H(k)X(k), k=0,1,…,N-1
H(k), X(k): DFT N điểm của h(n), x(n)
(các số 0 được đệm vào để tăng kích thước chuỗi lên N)
y(n) = IDFTN{Y(k)}
• Tổng chập vòng N điểm của h(n) và x(n)
tương đương với tổng chập tuyến tính của h(n) với x(n)
• DFT có thể được dùng để lọc tuyến tính
(bằng cách đệm thêm các số 0 vào chuỗi tương ứng)
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
26
dce
2011
DFT – Lọc tuyến tính
•
Tóm tắt
x(n)
DFTN
X(k)
x
DFTN
•
Y(k) = X(k)H(k)
IDFTN
y(n)
h(n)
H(k)
Ví dụ: tính đáp ứng y(n) dùng DFT và IDFT
–
h(n) = {1^, 0, 1, 2} và x(n) = {1^, 0, 1}
7
− j 2πkn / 8
− jπk / 2
− j 3πk / 4
H
(
k
)
=
h
(
n
)
e
=
1
+
e
+
2
e
∑
n =0
7
X (k ) =
x(n)e − j 2πkn / 8 = 1 + e − jπk / 2
∑
n =0
H (0) = 4
H (1) = (1 −
H ( 2) = 2 j
H (3) = (1 +
H ( 4) = 0
H (5) = (1 +
H (6) = −2 j
H (7) = (1 −
2 ) − (1 +
2) j
2 ) + (1 −
2) j
2 ) + ( 2 − 1) j
2 ) + (1 +
DSP – Biến đổi DFT
2) j
X ( 0) = 2
X (1) = 1 − j
X (2) = 0
X (3) = 1 + j
X (4) = 2
X (5) = 1 − j
X (6) = 0
X (7 ) = 1 + j
(k = 0,1,...,7)
Y (0) = 8
Y (1) = 2(1 − j )
Y ( 2) = 0
Y (3) = 2( 2 + j )
Y ( 4) = 0
Y (5) = 2( 2 − j )
Y (6) = 0
Y (7) = 2( − 2 + j )
7
y (n) = ∑ Y (k )e j 2πkn / 8 (n = 0,1,...,7)
k = 0©2011, Đinh Đức Anh Vũ
27
dce
2011
DFT – Lọc tuyến tính
• Tín hiệu nhập dài: chia nhỏ x(n) thành từng
block có độ dài cố định
– Overlap-Save
– Overlap-Add
• Giả thiết
– Bộ lọc có h(n): chiều dài M
– T/h nhập x(n): được chia nhỏ thành từng block có
chiều dài L >> M
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
28
dce
2011
Lọc tuyến tính – Overlap-Save
•
•
DFTN và IDFTN với N = L+M–1
Mỗi block dữ liệu được xử lý bao gồm (M – 1) điểm của block trước và L
điểm mới của t/h nhập
– M-1 điểm của block đầu tiên được set bằng 0
•
Đáp ứng xung của bộ lọc được đệm thêm (L – 1) số 0 để tăng chiều dài
lên N
– DFT của N điểm của h(n) được tính một lần duy nhất
Input
Add M-1 zeros
x1(n)
M-1
L
M-1
L
M-1
x2(n)
x3(n)
Output
L
M-1
DSP – Biến đổi DFT
L
M-1
L
M-1
L
L
M-1
Discard
L
L
©2011, Đinh Đức Anh Vũ
29
dce
2011
Lọc tuyến tính – Overlap-Add
• Đệm thêm (M-1) số 0 vào mỗi block dữ liệu đầu vào
Input
x1(n)
L
L
x2(n)
x3(n)
Output
zeros
M-1
L
M-1
L
M-1
L
M-1
M-1
+
L
M-1
+
Phương pháp hiệu quả hơn dùng để xác định bộ lọc tuyến tính
được trình bày trong chương 6
DSP – Biến đổi DFT
©2011, Đinh Đức Anh Vũ
30
dce
2011
DFT – Phân tích tần số
•
T/h ngắn
– Tính DFT từ x(n)
•
T/h dài
– Cửa sổ hoá
x(n): t/h cần phân tích
Giới hạn chiều dài chuỗi một khoảng L mẫu
⇔ Nhân chuỗi với cửa sổ chiều dài L
xw(n) = x(n)w(n)
w(n): hàm cửa sổ
Cửa sổ chữ nhật
1
w(n) =
0
DSP – Biến đổi DFT
Hàm cửa sổ có chiều dài L
chỉ phân biệt được
nếu các tần số cách nhau
ít nhất một đoạn
∆ω =
2π
L
Cửa sổ Hanning
0 ≤ n ≤ L −1
otherwise
12 (1 − cos L2−π1 n) 0 ≤ n ≤ L − 1
w(n) =
otherwise
0
©2011, Đinh Đức Anh Vũ
31