Tải bản đầy đủ (.pdf) (32 trang)

Bài giảng Xử lý tín hiệu số: Chương 5 - TS. Đinh Đức Anh Vũ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (550.29 KB, 32 trang )

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 (ω =


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 )

= +


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

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 =


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




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

∆ω =


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


×