You are on page 1of 161

ET4020 - Xử lý tín hiệu

số Giới thiệu về môn


học
TS. Đặng Quang Hiếu

Trường Đại học Bách Khoa Hà Nội


Viện Điện tử - Viễn thông

Năm học 2014 - 2015


Thông tin về môn
học
◮ Giáo trình:
◮ Alan V. Oppenheim & Ronald W. Schafer, Discrete-time
Signal Processing
◮ John G. Proakis & Dimitris K. Manolakis, Digital Signal

Processing: Principles, Algorithms and Applications


◮ Nguyễn Quốc Trung, Xử lý tín hiệu và lọc số
◮ Sách tham khảo: Vinay K. Ingle & John G. Proakis, Digital
Signal Processing Using Matlab
◮ Phần mềm: Matlab
◮ Học phần tiên quyết: Tín hiệu và hệ thống
◮ Website: http://dsp.edabk.org/, Dropbox
◮ Liên lạc: dangquanghieu@gmail.com
Đánh giá kết
quả

◮ Điểm quá trình (hệ số 0.3)


◮ Kiểm tra giữa kỳ
◮ Giải bài tập trên lớp: mỗi lần được cộng 1 điểm (tối đa 4 điểm
cho cả kỳ).
◮ Bài thi cuối kỳ (hệ số 0.7)
◮ Thí nghiệm (bắt buộc): Liên hệ với thầy Nguyễn Việt Anh
(0904155345)
Ứng dụng của
DSP

◮ Y tế: chụp, lưu trữ và phân tích ảnh; chẩn đoán bệnh.
◮ Viễn thông: 3G, GPS, wifi.
◮ Công nghiệp: giám sát, điều khiển và thiết kế hệ thống.
◮ Multimedia: mp3, jpeg, mpeg.
◮ Quân sự: radar, bảo mật.
◮ Kinh tế: phân tích tài chính, chứng khoán.
Tín hiệu
số?

x (n) y (n)
DAC y (t)
x (t) ADC DSP

◮ Thời gian rời rạc: Lấy mẫu


◮ Biên độ rời rạc: Lượng tử hóa
Ưu điểm của
DSP

◮ Linh hoạt
◮ Độ chính xác cao
◮ Giá thành thấp
◮ Các thuật toán có hiệu năng cao như FFT.
Phạm vi môn
học
Các nội dung chính
◮ Tín hiệu và hệ thống rời rạc
◮ Phân tích tín hiệu và hệ thống trên miền tần số
◮ DFT và các thuật toán nhanh (FFT)
◮ Thiết kế bộ lọc số FIR
◮ Thiết kế bộ lọc số IIR
◮ Ứng dụng của DSP
Một số nội dung chưa học trong môn này:
◮ Các phương pháp ADC
◮ Sai số lượng tử hóa
◮ Cấu trúc bộ lọc
◮ Bộ lọc thích nghi
Homework
s

◮ Phần mềm Matlab


◮ Giáo trình, sách tham khảo
ET4020 - Xử lý tín hiệu số
Tín hiệu và hệ thống rời rạc

TS. Đặng Quang Hiếu


http://dsp.edabk.org

Trường Đại học Bách Khoa Hà Nội


Viện Điện tử - Viễn thông

Năm học 2014 - 2015


Tín hiệu rời
rạc
lấy mẫu
x (t) −−−−−−→ x (nTs ) −−−−−chuẩn
−−−→ x hóa
(n)
Ts

x (t) x (n)
b

b b b b b b
b
b b
b b

t
b
b b b b

n
b b b b
b b b
b
b

◮ Biểu diễn tín hiệu?


◮ Công suất, năng lượng?
◮ Các phép toán?
Hệ thống rời
rạc

x (n) y (n) = T {x (n)}


→T

x (n) y (n)
hệ thống T

Các khái niệm:


◮ LTI?
◮ Nhân quả?
◮ Ổn định?
Hệ thống
LTI

x (n) y (n)
T

Đáp ứng xung của hệ thống:

h(n) = T {δ(n)}
Phép chập:

Σ∞
y (n) = x (k)h(n − k) := x (n) ∗ h(n)
k=− ∞
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(− k)

b b b b b b b

-4 -3 -2 -1 0 1 2 3 4 5 6
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(−k) v 0(k)
b b
y (0)
= 0.75 + 1
b b

b b b b b b b
k b b b b

b b b b b
k

-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2
3 4 5 6
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(−k) v0 (k)
b b
y (0) =
0.75 + 1
b b

b b b b b b b
k b b b b

b b b b b
k

-4 -3 -2 -1 0 1 2 3 4 5 6
b b
b
b
b
b
b
-4 -3 -2 -1 0 1 2
3 4 5 6
h(−1 − k) k

-4 -3 -2 -1 0 1 2 3 4 5 6
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(−k) v 0(k)
b b
y (0) =
0.75 + 1
b b

b b b b b b b
k b b b b

b b b b b
k
y (−1) = 1
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2
3 4 5 6 b b b b b b b
k b b b b b b b

h(−1 − k)
b b b
k

-4 -3 -2 -1 0 1 v2− 1 (k)
3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(−k) v 0(k)
b b
y (0) =
0.75 + 1
b b

b b b b b b b
k b b b b

b b b b b
k
y (−1) = 1
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2
3 4 5 6 b b b b b b b
k b b b b b b b

h(−1 − k)
b b b
k

-4 -3 -2 -1 0 1 v2− 1 (k)
3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(1 − k)
b b b b b b b

-4 -3 -2 -1 0 1 2 3 4 5 6
Cách tính phép
chập
x (k) h(k)

b b b b b b
k b b b b b b b
k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(−k) v 0(k)
b b
y (0) =
0.75 + 1
b b

b b b b b b b
k b b b b

b b b b b
k
y (−1) = 1
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2
3 4 5 6 b b b b b b b
k b b b b b b b b

h(−1 − k)
b b
k

-4 -3 -2 -1 0 1 v2− 1 (k)
3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
h(1 − k) v1 (k)
b
y (1) =
b

0.5 + 0.75 + 1
b
b b b b b b b
k b b b b b b b b
k
Kết quả phép
chập
x (n)

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
h(n)
b

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
y (n)

b
n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
Dạng ma trận của phép chập
Giả sử x (n) có chiều dài L, h(n) có chiều dài P .

L +P−1 = L

y H x
Phép tương
quan
Tương quan chéo của hai tín hiệu x (n) và y (n):

Σ∞
rxy (n) =

x (m)y (m − n)
m= −∞

rxx (n) =
Hàm tự tương quan: x (m)x (m − n)
m=− ∞

Σ∞
Cách tính?
◮ Tính trực tiếp qua đồ thị
◮ Nhân ma trận
So sánh với phép chập?
Ứng dụng của phép chập, tương
quan

◮ Phép chập:
◮ Mọi khối xử lí tín hiệu đều có thể được coi như một hệ thống
LTI với phép chập.
◮ Kênh đa đường
◮ Phép tương quan: Trong máy thu ở các hệ thống thông tin
(vô tuyến)
Hệ thống LTI nhân quả, ổn định

Xét hệ thống LTI với đáp ứng xung h(n).


◮ Hệ thống ổn định:

Σ∞
|h(n)| < ∞
n= −∞

◮ Hệ thống nhân quả:


h(n) = 0, ∀n < 0
Phương trình sai phân tuyến tính hệ số
hằng

ΣN ΣM
k=0
ak y (n − k) = br x (n −
r)
◮ Hệ thống có đáp ứng xung chiềur =0
dài hữu hạn (FIR): N = 0
◮ Hệ thống có đáp ứng xung chiều dài vô hạn (IIR): N > 0
Homewo
rk

1. Sử dụng Matlab để biểu diễn tín hiệu rời rạc và thực hiện các
phép toán trên tín hiệu rời rạc.
2. Làm các bài tập tính toán phép chập, tương quan.
ET4020 - Xử lý tín hiệu số
Phân tích tín hiệu và hệ thống trên miền
z
TS. Đặng Quang Hiếu
http://dsp.edabk.org

Trường Đại học Bách Khoa Hà Nội


Viện Điện tử - Viễn thông

Năm học 2014 - 2015


Biến đổi
z
ZT

n z

IZT

Σ∞
X (z ) =

x (n)z − n n =−∞

trong đó z là biến số phức z = rej ω.


◮ Miền hội tụ (ROC) của X (z )? Khi x (n) là dãy một phía bên
phải, một phía bên trái, hai phía?
◮ Các tính chất: trễ, chập, đạo hàm, v.v.
◮ Biến đổi z ngược: Phân tích thành các phân thức tối giản.
Hàm truyền
đạt

H(z ) = ZT{h(n)}
◮ Các điểm cực zpk và các điểm không z0r ? Vẽ trên mặt phẳng
phức?
◮ Hệ thống LTI ổn định: Miền hội tụ chứa vòng tròn đơn vị
◮ Hệ thống LTI nhân quả ổn định:

|zpk | < 1, ∀k

◮ Sử dụng biến đổi z một phía để giải phương trình sai phân
tuyến tính hệ số hằng
Tiêu chuẩn ổn định Schur-Cohn
(1)
ΣN
br x (n − r )

Σ M
Hàm truyền đạt
y (n) = − a k y (n − k) +
B (z ) k=1 b0 + b 1 z − 1 +
H(z ) = · · · =+ bM z − M
N z −N
A(z ) 1 + a z − 1 + a z − 2 + · · · + a
r =0 1 2
Tất cả các nghiệm của A(z ) có nằm trong vòng tròn đơn vị không?
Xét các đa thức Am(z ) và Bm(z )

Σm
am(0) = 1
Am(z ) =
am(k)z − k k=0
−m
Bm(z ) = z A m (z − 1 )
Σm
= am(m − k)z
−k
k=0
Tiêu chuẩn ổn định Schur-Cohn
(2)

Hệ thống ổn định khi |Km | < 1, ∀m = 1, 2, . . . , N, trong đó các hệ


số Km được tính theo các bước như sau
1. Đặt AN (z ) = A(z ), KN = aN (N)
2. Với m = N, N − 1, . . . , 1,
Am(z ) − KmBm(z )
Am−1 (z ) = , Km = am(m)
1 − K m2
Ví dụ: Kiểm tra xem các nghiệm của đa thức sau có nằm trong
vòng tròn đơn vị hay không?

A(z ) = 1 − 0.3z − 1 + 1.5z − 2 − 0.2z − 3 + 0.75z − 4


Sơ đồ thực hiện hệ thống LTI: Dang trực tiếp
I

ΣN ΣM
y (n) = − ak y (n − k) + br x (n −
r)
k=1 r =0
X (z ) + + Y (z )

b0
z −1 z −1
b1 −a 1
+ +

z −1 z −1
b2 −a 2

Dạng trực tiếp: Nhân trực tiếp với các hệ số ak , br của phương
trình sai phân.
Sơ đồ thực hiện hệ thống LTI: Dạng trực tiếp
II

b0
X (z ) + b + Y (z )

z −1
−a 1 b1
+ b +

z −1
−a 2 b2

Dạng chính tắc: Sử dụng ít bộ nhớ (số phần tử trễ) nhất -


max{N, M}
Lưu đồ tín
hiệu

b0
X b b b

z −1

−a 1 b1
b b

−a 2 z −1 b2
Lưu đồ tín hiệu - Dạng chuyển
vị
b0
Y b b b

z −1

−a 1 b1
b b

−a 2 z −1 b2

◮ Đổi chỗ đầu vào / đầu ra


◮ Đảo hướng tất cả các nhánh
Công thức Mason
(1) 2 0.5

D D D
−1
x (n) b
y (n)

D D D

−1 1.5

H(z ) = 1 ΣN Gk ∆k

k=1

trong đó
Σ Σ Σ
∆=1− Li + Li Lj − · · · + (−1)m ··
·+...
Công thức Mason
(2) 2z − 1

z −1 z −1 0.5z − 1
−z −1
1 2 3 4 5 6

−1

1.5z − 1

◮ Loop: (2,3,6,5,2), (3,6,5,4,3), và (3,6,4,3)


◮ Forward path: (1,2,3,6)
Công thức Mason
(2) 2z − 1

0.5z − 1
−z −1
1 2 3 4 5 6

1.5z − 1

◮ Loop: (2,3,6,5,2), (3,6,5,4,3), và (3,6,4,3)


◮ Forward path: (1,2,3,6)
Công thức Mason
(2)

z −1 z −1 0.5z − 1

1 2 3 4 5 6

1.5z − 1

◮ Loop: (2,3,6,5,2), (3,6,5,4,3), và (3,6,4,3)


◮ Forward path: (1,2,3,6)
Công thức Mason
(2)

z −1

1 2 3 4 5 6

−1

1.5z − 1

◮ Loop: (2,3,6,5,2), (3,6,5,4,3), và (3,6,4,3)


◮ Forward path: (1,2,3,6)
Công thức Mason
(2)

−z −1
1 2 3 4 5 6

1.5z − 1

◮ Loop: (2,3,6,5,2), (3,6,5,4,3), và (3,6,4,3)


◮ Forward path: (1,2,3,6)
Homewo
rk

1. Sử dụng Matlab để biểu diễn tín hiệu rời rạc và thực hiện các
phép toán trên tín hiệu rời rạc.
2. Làm các bài tập tính toán phép chập, biến đổi z và vẽ sơ đồ
hệ thống.
3. Tìm hiểu kỹ hơn và làm các bài tập sử dụng công thức
Mason.
ET4020 - Xử lý tín hiệu số
Các phép biến đổi Fourier

TS. Đặng Quang Hiếu


http://dsp.edabk.org

Trường Đại học Bách Khoa Hà Nội


Viện Điện tử - Viễn thông

Năm học 2013 - 2014


Outlin
e

Biến đổi Fourier

Chuỗi Fourier rời rạc cho dãy tuần hoàn

Biến đổi Fourier rời rạc


Biến đổi
Fourier
FT

n ω

IFT

FT Σ∞
x (n) − → X (ej ω) = FT{x (n)} x (n)e−j ωn
= n=−∞

◮ Tuần hoàn với chu kỳ 2π


◮ Phổ biên độ: |X (ej ω)|, và phổ pha: arg{X
(ej ω)}.
◮ Biến đổi ngược:
IFT ∫ π
X (ej ω) − −→ x (n) = IFT{X (ej ω)} = 1 X (ej ω)ej ωnd ω
π −π
2
Các ví dụ về
FT
1. Tìm X (ej ω), |X (ej ω)| và arg{X (ej ω)} của các dãy sau đây:
(a) x (n) = δ(n)
(b) x (n) = δ(n − 2)
(c) x (n) = δ(n − 2) − δ(n)
(d) x (n) = rectN (n)
(e) x (n) = (0.5)nu(n)
(f) x (n) = u(n)
2. Xét bộ lọc thông thấp lý tưởng có đáp ứng tần số (trong một
chu kỳ) như sau:
.
Hlp (ej ω) = 1, |ω| ≤ ωc
0, ωc < |ω| ≤
π
(a) Hãy tìm đáp ứng xung hlp (n) của bộ lọc này.
(b) Giải bài toán cho trường hợp bộ lọc thông cao
Phổ biên độ và phổ pha của rect10(n)

10

6
|X(j)|

0
−8 −6 −4 −2 0 2 4 6 8

2
arg{X(j)}

−2

−4
−8 −6 −4 −2 0 2 4 6 8

Các tính
chất ◮ Quan hệ với biến đổi z:
X (e j ω) = X (z )|z =e j ω
◮ Điều kiện hội tụ:
Σ∞
|x (n)| < ∞
n=−∞

Một hệ thống LTI có đáp ứng tần số khi và chỉ khi nó


ổn định.
◮ Tuyến tính, dịch thời gian, dịch tần số, chập, v.v.
◮ Các tính chất đối xứng
◮ Quan hệ Parseval
Σ∞ ∫ π
|x (n)|2 = 1 |X (ej ω)|2d
n=−∞ ω
2π −π

◮ Định lý Wiener - Khintchine: Nếu x (n) ∈ R thì


FT{rxx (n)} = SXX (ej ω) := |X (ej ω)|2
trong đó SXX (ej ω) là phổ mật độ năng lượng của x (n).
Outlin
e

Biến đổi Fourier

Chuỗi Fourier rời rạc cho dãy tuần hoàn

Biến đổi Fourier rời rạc


Khái niệm dãy tuần
hoàn

x˜(n) = x˜(n − N), ∀n

◮ Chu kỳ N ∈ Z → ký hiệu x˜(n)N .


◮ Tồn tại khai triển Fourier
◮ Khác hệ số N so với khái niệm chuỗi Fourier cho tín hiệu tuần
hoàn trong môn Tín hiệu và hệ thống!
Định nghĩa cặp chuỗi Fourier rời rạc cho dãy tuần
hoàn
NΣ−1
X˜(k) =

x˜(n)e−j N kn
n=0
N −1
1 Σ
x˜(n) = N X˜(k)ej N kn

k=0

◮ WN = e −j 2π
N .
◮ Biên độ và pha: |X˜(k)|, arg{X˜(k)}.
Ví dụ: Cho dãy xung chữ nhật tuần hoàn x˜(n) với chu kỳ N:
.
x˜(n) 1, ℓN ≤ n ≤ ℓN + M − 1, ∀ℓ ∈ Z, 1≤M≤N
= 0, n còn lại

Hãy tìm X˜(k), |X˜(k)|, arg{X˜(k)}.


Khi N = 100, M = 10
0.1

0.09

0.08

0.07

0.06

|X[k]| 0.05

0.04

0.03

0.02

0.01

0
−100 −80 −60 −40 −20 0 20 40 60 80 100
k

1
arg{X[k]}

−1

−2

−3
−100 −80 −60 −40 −20 0 20 40 60 80 100
k
Các tính
chất

◮ Tuyến tính, dịch thời gian, dịch tần số


◮ Đối ngẫu: Nếu
DFS
x˜(n) ← −→
thì X˜(k)
DFS
X˜(n) ← −→ Nx˜(−k)
◮ Các tính chất đối xứng
Chập tuần
hoàn

DFS
x˜1 (n) ← −→ X˜ (k)
1 DFS
x˜2 (n) ← −→ X˜ (k)
2

Nếu X˜3(k) = X˜1(k)X˜2(k)


−→ Chập tuần hoàn:

NΣ−1

x˜3(n)N = x˜1(n)(˜∗)N x˜2(n) =


x˜1(m)x˜2(n − m)
m=0
Các bước tính chập tuần
hoàn

Tìm x˜3(n0), ∀n0 ∈ [0, (N − 1)]


(1) Lấy đối xứng x˜2(m) → x˜2(−m)
(2) Dịch theo trục thời gian đi n0 mẫu
(3) Nhân: v˜n0(m) = x˜1(m)x˜2(n0 − m) trong đoạn [0, (N − 1)]
(4) Tính tổng: Cộng tất cả thành phần khác không của v˜n0(m)
trong đoạn [0, (N − 1)] → x˜3(n0)
(5) Kết quả là một dãy tuần hoàn với chu kỳ N:
x˜3(n0) = x˜3(n0 + rn), ∀r ∈ Z.
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m)
b b
b

b
b b
b
b
b

-4 -3 -2 -1 0 1 2 3 4 5 6 b

m
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m)
b b b
b b
b b b b
b b b
b
b
b
b

b
m
b
b b

-4 -3 -2 -1 0 1 2 3 4 5 6 b -4 -3 -2 -1 0 1 2 3 4 5 6
b

m
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b
b b
b b b b
b b b
b
b
b
b

b
m
b
b b

-4 -3 -2 -1 0 1 2 3 4 5 6 b -4 -3 -2 -1 0 1 2 3 4 5 6
b

m
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b
b b
b b b b
b b b
b
b
b
b

b
m
b
b b

-4 -3 -2 -1 0 1 2 3 4 5 6 b -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(1 − m)
b

b
b
b
b m b
b

b b
b b
b
m

-4 -3 -2 -1 0 1 2 3 4 5 6
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b b b b
b b
b b b b b
b b b b b

m
b b

-4 -3 -2 -1 0 1 2 3 4 5 6
-4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(1 − m) v˜1(m)
b b
b b b b b
b
m m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b b b b
b b
b b b b b
b b b b b

m
b b

-4 -3 -2 -1 0 1 2 3 4 5 6
-4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(1 − m) v˜1(m)
b b
b b b b b
b
m m
x˜3(1) = 2
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b b b b
b b
b b b b b
b b b b b

m
b b

-4 -3 -2 -1 0 1 2 3 4 5 6
-4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(1 − m) v˜1(m)
b b
b b b b b
b
m m
x˜3(1) = 2
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(2 − m)
b b
b

b
b b

b
b
b
b
m b

-4 -3 -2 -1 0 1 2 3 4 5 6
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b b b b
b b
b b b b b
b b b b b

m
b b

-4 -3 -2 -1 0 1 2 3 4 5 6
-4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(1 − m) v˜1(m)
b b
b b b b b
b
m m
x˜3(1) = 2
-4 -3 -2 -1 0 1 2 3 4 56 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(2 − m) v˜2(m)

m b b
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Minh họa các bước tính phép chập tuần
hoàn
x˜1(m) x˜2(m)

b b
m
m
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(−m) v˜0(m) x˜3(0) = 1.75
b b b b b b
b b
b b b b b
b b b b b

m
b b

-4 -3 -2 -1 0 1 2 3 4 5 6
-4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(1 − m) v˜1(m)
b b
b b b b b
b
m m
x˜3(1) = 2
-4 -3 -2 -1 0 1 2 3 4 56 -4 -3 -2 -1 0 1 2 3 4 5 6
x˜2(2 − m) v˜2(m)

m
x˜3(2) = 2.25
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
b b

m
Kết quả phép chập tuần
hoàn
x˜1(n)

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
x˜2(n)
b b
b

b
b
b
b b
b

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8 b

b
b

x˜3(n)
b

n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
Bài
tập

1. Viết chương trình Matlab để vẽ phổ biên độ và phổ pha của


một dãy có chiều dài hữu hạn bất kỳ
2. Sử dụng hàm freqz trong Matlab để vẽ đáp ứng tần số của
một hệ thống LTI từ phương trình sai phân tuyến tính hệ số
hằng.
3. Lấy mẫu tần số. Cho dãy x (n) có chiều dài hữu hạn L với phổ
X (ej ω) (chu kỳ 2π). Để biểu diễn phổ tín hiệu, người ta lấy
các mẫu tại tần số ω = k2π N để thu được X (e
jk 2π N ) với chu

kỳ mẫu 2πN . Với những giá trị nào của N thì ta có thể tái tạo
lấy
lại hoàn toàn x (n) từ các mẫu X (ejk 2πN )?
Outlin
e

Biến đổi Fourier

Chuỗi Fourier rời rạc cho dãy tuần hoàn

Biến đổi Fourier rời rạc


Cặp biến đổi Fourier rời rạc
(1) DFT

n k

IDFT

NΣ−1
X (k) = DFT{x (n)} = x (n)e−j 2π
N kn k = 0, · · · , N −
n=0 1

NΣ−1
x (n) = IDFT{X (k)} = 1 X (k)ej N2πkn n = 0, · · · , N −
N
k=0 1

◮ x (n) và X (k) - chiều dài hữu hạn [0, N − 1]


◮ Khi cần viết gọn: WN = e −j 2πN
◮ Khi cần nhấn mạnh chiều dài hữu hạn: x (n)N , X (k) N
Cặp biến đổi Fourier rời rạc
(2)
x (0) X (0)

x (1) DFT X (1)

.. N - điểm ..

x (N − 1) X (N − 1)

Ví dụ:
1. Tìm DFT 4-điểm (X (k), |X (k)|, arg{X (k)}) của dãy

x (n) = {1, j, −j, 1}


2. Tìm DFT N-điểm của x (n) = rectM (n) cho các trường hợp:
(a) M = 1
(b) M = N
(c) 1 < M < N
Mối liên hệ giữa X (k) và X (ej
ω ) Xét tín hiệu x (n) có chiều dài hữu hạn N. Phổ X (ej ω) của x (n) là
hoàn toàn xác định nếu thực hiện lấy mẫu ít nhất N mẫu trong
đoạn [0, 2π]
.
j .
X (k) = X (e ω) . ω=k , k = 0, · · · , (N − 1)
N2π

ω

Mối liên hệ giữa X (k) và X˜ (k)

◮ Nếu tính X (k)N , x (n)N từ định nghĩa của DFT và IDFT mà


không hạn chế trong đoạn [0, N − 1] thì ta được hai dãy tuần
hoàn với chu kỳ N: X˜(k)N , x˜(n)N .

X˜(k)N = X (k mod N)

. X˜ ˜(k)N , x˜(n)N thì ta được


◮ Nếu trích một chu kỳ của các dãy
X (k)N , x (n)N X (k), 0 ≤ k ≤ (N −
X (k)N = X˜(k) · rectN (n) = 1)
0, k còn lại
Biểu diễn DFT và IDFT dưới dạng ma
trậnXét ma trận WN×N trong đó Wkn = W kn N
 
1 1 ··· 1
1 1N1 ··· WN 
W WN2
(N−1) 

WN2 WN4 ·· · 2(N−1) 

W = 
. . . WN . 
 ..
 . . .. .
1
1 W N(N−1) WN
(N−1)2 · · W N(N−1)

2

·

X = [X (0), X (1), · · · , X (N − 1)]T


x = [x (0), x (1),
· · · , x (N − 1)]T

DFT và IDFT có thể được biểu diễn dưới dạng:


X = Wx
1
x = WH
X N
Dịch vòng: Một chu kỳ của tín hiệu tuần hoàn sau
dịch
x (n − n0)N = x˜(n − n0)N · rectN (n)
x (n)
b
b

n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
x˜(n)N
b b b
bb
b b

b b
b b
b
b n

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
x˜(n − n0 )N
b
b
b
b
b b
b

b
n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
x (n − n0 )N

b
b
n

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
Dịch vòng: Đặt lên vòng tròn và quay quanh
tâm

x (2) x (1) x (0) x (5)

x (3) b
x (n)6 b
x (0) x (1) b
x (n − 2)6 b
x (4)
{x (4), x (5), x (0), x (1), x (2), x
(3)}

x (4) x (5) x (2) x (3)


Tính chất
dịch

◮ Dịch thời gian

DFT{x (n − n0)N } = e−j (2π/N)kn0 X (k)

◮ Dịch tần số

DFT{ej (2π/N)k0 n x (n)} = X (k − k0)N


Đảo trục thời gian (lấy đối
xứng)

Nế
u DFT{x (n)} = X (k)
thì
DFT{x (−n)N } = X (−k)N
Lấy đối xứng cho dãy có chiều dài hữu hạn
(1)
x (−n)N = x˜(−n)n · rectN (n)
x (n)
b
b

n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
x˜(n)N
b b b
bb
b b

b b
b b
b
b n

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8

b x˜(−n)N b
b

b
b

b b
b b

-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
b
b

x (−n)N
b

n
b
b

n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8
Lấy đối xứng cho dãy có chiều dài hữu hạn
(1)
x (2) x (1) x (4) x (5)

x (3) b b
x (0) x (3) b
x (−n)6 b
x (0)
x (n)6
{x (0), x (5), x (4), x (3), x (2), x
(1)}

x (4) x (5) x (2) x (1)

x (−n)N = {x (0), x (N − 1), x (N − 2), . . . , x


(1)}
Đối
ngẫu

Nế
u DFT{x (n)} = X (k)
thì
DFT{X (n)} = Nx (−k)N
Lưu ý: x (−k)N =?
Các tính chất đối
xứng

(a) DFT{x ∗(n)} = X ∗ (−k)N


(b) DFT{x ∗(−n)N } = X ∗ (k)
(c) DFT{Re[x (n)]} = 12[X (k) + X ∗(−k)N ]
(d) DFT{ 12[x (n) + x ∗(−n)N ]} = Re[X
(e) Nếu x (n) ∈ R
(k)]
◮ X (k ) = X ∗(−k )N = X ∗ (N − k )
◮ Re[X (k )] = Re[X (N − k )]
◮ Im[X (k )] = −Im[X (N − k )]
◮ |X (k )| = |X (N − k )|
◮ arg{X (k )} = − arg{X (N − k )}
Quan hệ
Parseval

NΣ−1 N −1
x (n)y ∗(n) 1 Σ X (k)Y ∗ (k)
N
n=0 = k=0

Nếu x (n) = y (n):

NΣ−1 NΣ−1
|x (n)|2 = 1 |X (k)|2
N
n=0 k=0
Chập vòng
Định nghĩa chập vòng:

NΣ−1
∀n ∈ [0, N
x3(n)N = x1(n)(∗)N x2(n) = x1(m)x2(n−m)N , −1]
m=0
Áp dụng DFT ta có:

DFT{x1(n)(∗)N x2(n)} = X1(k)X2(k)


Chập vòng
Định nghĩa chập vòng:

NΣ−1
∀n ∈ [0, N
x3(n)N = x1(n)(∗)N x2(n) = x1(m)x2(n−m)N , −1]
m=0
Áp dụng DFT ta có:

DFT{x1(n)(∗)N x2(n)} = X1(k)X2(k)


Cách tính chập vòng:
◮ Miền thời gian: Tính trực tiếp sử dụng khái niệm dịch vòng
hoặc tính qua chập tuần hoàn.
◮ Miền tần số

Ví dụ: Tính chập vòng 5-điểm (N = 5) của hai dãy sau:

x1(n) = rect4(n) + 0.5δ(n − 4)


.
x2(n) = 1 − 4n , 0 ≤ n ≤ 4
0, n còn lại
Dạng ma trận của chập
vòng

x3 = X2 · x1
trong đó x3 = [x3(0), x3(1), · · · , x3(N − 1)]T ,
x1 = [x1(0), x1(1), · · · , x1(N − 1)]T và X2 là (circulant matrix):

 x2(0) x2 (N − 1) · · ·
 x2(1) x2(0) · · · x2(2) 
 x2(1) 
X2 =  . . .. . 
. . . .
x2(N − 1) x2(N − 2) · · · x2(0)
Dạng ma trận của chập
vòng

x3 = X2 · x1
trong đó x3 = [x3(0), x3(1), · · · , x3(N − 1)]T ,
x1 = [x1(0), x1(1), · · · , x1(N − 1)]T và X2 là (circulant matrix):

 x2(0) x2 (N − 1) · · ·
 x2(1) x2(0) · · · x2(2) 
 x2(1) 
X2 =  . . .. . 
. . . .
x2(N − 1) x2(N − 2) · · · x2(0)

◮ Dạng ma trận của chập tuyến tính


Dạng ma trận của chập
vòng

x3 = X2 · x1
trong đó x3 = [x3(0), x3(1), · · · , x3(N − 1)]T ,
x1 = [x1(0), x1(1), · · · , x1(N − 1)]T và X2 là (circulant matrix):

 x2(0) x2 (N − 1) · · ·
 x2(1) x2(0) · · · x2(2) 
 x2(1) 
X2 =  . . .. . 
. . . .
x2(N − 1) x2(N − 2) · · ·
x2(0)
◮ Dạng ma trận của chập tuyến tính → ma trận Toeplitz!

◮ Làm thế nào để tính chập vòng bằng Matlab?


Mối quan hệ giữa chập vòng và chập tuyến
tính

Cho hai dãy có chiều dài hữu hạn, x (n): [0 · · · (L − 1)] và h(n):
[0 · · · (P − 1)]. Nếu

y1(n) = x (n) ∗ h(n)


y2(n) = x (n)(∗)N h(n)

(a) Với những giá trị nào của N thì y1(n) = y2(n), ∀n?
(b) Nếu N = L thì tại những thời điểm n nào ta có y1(n) = y2(n)?
(c) Nếu lấy P giá trị cuối của x (n) vòng lên đầu và chập tuyến
tính với h(n) thì sao?
ET4020 - Xử lý tín hiệu số
Chương 3: Các thuật toán FFT và ứng
dụng
TS. Đặng Quang Hiếu
http://dsp.edabk.org

Trường Đại học Bách Khoa Hà Nội


Viện Điện tử - Viễn thông

Năm học 2012 - 2013


Outlin
e

Ứng dụng của


DFT

Các thuật toán


FFT
Thực hiện hệ thống FIR
Xét hệ thống LTI với đáp ứng xung h(n) có chiều dài hữu hạn P .
Khi đầu vào x (n) chiều dài L, ta có:

y ( n )= x (n) ∗ h(n)= x (n)N (∗)M h(n)N


trong đó N ≥ L + P − 1, các dãy x (n)N , h(n)N được chèn thêm 0
vào cuối.

x (n) DFT

IDFT y (n)

h(n) DFT

Trên thực tế, đầu vào x (n) rất dài so với đáp ứng xung h(n) (có
thể coi dài tới vô hạn): L ≫ P . Khi đó, chia x (n) thành các
đoạn nhỏ trước khi chập → chập phân đoạn.
Chập phân đoạn: Xếp chồng & cộng (overlap-
add)

đầu vào
Chập phân đoạn: Xếp chồng & cộng (overlap-
add)

đầu vào

x1 (n)

(P − 1) điểm

đầu ra y1(n)
Chập phân đoạn: Xếp chồng & cộng (overlap-
add)

đầu vào

x1(n)

x2 (n)
(P − 1) điểm

đầu ra y1(n)

y2(n)
Chập phân đoạn: Xếp chồng & cộng (overlap-
add)

đầu vào

x1(n)

x2(n)
(P −
1)
điểm
đầu ra y1(n)
x3 (n)

y2(n)

y2 (n)
Chập phân đoạn: Xếp chồng & cộng (overlap-
add)

đầu vào

x1(n)

x2(n)
(P −
1)
điểm
đầu ra y1(n)
x3 (n)
+
y2(n)
+
y2(n)
+
Chập phân đoạn: Đặt kề nhau (overlap-
save)

đầu vào

(P − 1) điểm 0
Chập phân đoạn: Đặt kề nhau (overlap-
save)

đầu vào

x1 (n)

(P − 1) điểm 0

đầu ra y1(n)
Chập phân đoạn: Đặt kề nhau (overlap-
save)

đầu vào

x1(n)

(P − 1) điểm 0
x2 (n)

đầu ra y1(n)

y2(n)
Chập phân đoạn: Đặt kề nhau (overlap-
save)

đầu vào

x1(n)

(P − 1) điểm 0
x2(n)

x3 (n)

đầu ra y1(n)

y2(n)

y3 (n)
Chập phân đoạn: Đặt kề nhau (overlap-
save)

đầu vào

x1(n)

(P − 1) điểm 0
x2(n)

x3 (n)

đầu ra y1(n)

y2(n)

y3 (n)
Bỏ
Phân tích phổ của tín hiệu thời gian
thực
Nguyên lý: Chia tín hiệu thành các đoạn (thường là chồng lên
nhau), thực hiện biến đổi FFT trên từng đoạn, với các loại cửa sổ
khác nhau.
Các bước thực hiện trên một đoạn dữ liệu:
1. Rời rạc hóa tín hiệu x (t) → x (n), xét trên một đoạn N
mẫu
2. Nhân với hàm cửa sổ xd ( n )= x (n)w (n)
3. Thực hiện FFT M-điểm cho xd (n), với M ≥ N (thêm các
điểm0 vào cuối ko làm thay đổi phổ tín hiệu!).
4. Chuẩn hóa tần số, biên độ khi vẽ |X (k)|
Lưu ý:
► Ảnh hưởng của cửa sổ: Rò rỉ công suất (leakage)
► Độ phân giải tần số
► Các đoạn chồng lên nhau (overlapping)
Outlin
e

Ứng dụng của


DFT

Các thuật toán


FFT
Độ phức tạp tính toán của
DFT

NΣ−1
X (k)= x (n)WN 0≤k≤N−
kn
, n=0 1
trong đó, WN = e − j 2π/N .

Để tính trực tiếp mỗi giá trị của X (k):


► N phép nhân phức (4N phép nhân thực và 2N phép cộng
thực)
► N − 1 phép cộng phức (2N − 2 phép cộng thực)
► 2N phép tính giá trị các hàm sin, cos.

Độ phức tạp tính toán của DFT - N điểm: O(N2).


DIT Radix-2 FFT (phân chia theo thời gian, cơ số
2) Xét N = 2v , chia x (n) thành hai dãy chỉ số chẵn x (2m) và chỉ
số lẻ x (2m + 1):

NΣ−1
X (k) = x (n)WNkn, k = 0, 1, · · · , (N −
n=0 1)
N/2− 1 Σ 1
N/2−
Σ
= x k2m
N + x (2m + 1)W
N
k(2m+1)

m=0 (2m)W m=0


DIT Radix-2 FFT (phân chia theo thời gian, cơ số
2) Xét N = 2v , chia x (n) thành hai dãy chỉ số chẵn x (2m) và chỉ
số lẻ x (2m + 1):

NΣ−1
X (k) = x (n)WNkn, k = 0, 1, · · · , (N −
n=0 1)
N/2− 1 Σ 1
N/2−
Σ
= x k2m
N + x (2m + 1)W
N
k(2m+1)

m=0 (2m)W m=0

Với k = 0, 1,... , N/2, ta


có:
N/2− 1 N/2− 1
Σ Σ
X (k) = x (2m)W km + W k x (2m + 1)WN/2
km
N/2 N
m=0 m=0

= F 1 (k)+ W kNF2(k)
DIT Radix-2 FFT: Độ phức tạp tính
toán
Nhận xét:

F1(k + N/2)

= FW
1 (k) F2(k =
k+N/2
N + N/2)
−W kN

= F2(k)
DIT Radix-2 FFT: Độ phức tạp tính
toán
Nhận
xét:
F1(k + N/2) = F1(k)
F2(k + N/2) = F2(k)
k+N/2
WN = −W Nk

do
vậy, N
X (k + ) = F1(k) − W k NF2(k)
2
X (k) = F 1 (k)+ W k FN2(k)
DIT Radix-2 FFT: Độ phức tạp tính
toán
Nhận
xét:
F1(k + N/2) = F1(k)
F2(k + N/2) = F2(k)
k+N/2
WN = −W Nk

do
vậy, N
X (k + ) = F1(k) − W k NF2(k)
2
X (k) = F 1 (k)+ W k FN2(k)

Nếu tính toán trực tiếp F1(k) và F2(k), tổng số phép nhân phức là:

2(N/2)2 + N/2
DIT Radix-2 FFT: Chia để
trị F1 (0)
x (0) X (0)

F1 (1) W 0N
x (2) X (1)
DFT
F1 (2) W 1N
N/2 - điểm
x (4) X (2)

F1 (3) W 2N
x (6) X (3)

F2 (0) W 3N
x (1) X (4)
−W 0
N
F2 (1)
x (3) X (5)
DFT −W 1
N
N/2 - điểm F2 (2)
x (5) X (6)
−W 2
N
F2 (3)
x (7) X (7)
−W 3
N
DIT Radix-2 FFT: Rút
gọn
x (0) X (0)

x (2) X (1)
DFT
N/2 - điểm
x (4) X (2)

x (6) X (3)

W 0N
x (1) X (4)
−1
W 1N
x (3) X (5)
DFT −1
N/2 - điểm W 2N
x (5) X (6)
−1
W 3N
x (7) X (7)
−1
DIT Radix-2 FFT: Tiếp tục phân
chia
x (0) X (0)
DFT
N/4 - điểm
x (4) X (1)

W 0N
x (2) X (2)
DFT −1
N/4 - điểm W 2N
x (6) X (3)
−1
W 0N
x (1) X (4)
DFT −1
N/4 - điểm W 1N
x (5) X (5)
−1
W 0N W 2N
x (3) X (6)
DFT −1 −1
N/4 - điểm W 2N W 3N
x (7) X (7)
−1 −1
DIT Radix-2 FFT: Lưu đồ tín hiệu hoàn
chỉnh
x (0) X (0)

W 0N
x (4) X (1)
−1
W0
N
x (2) X (2)
−1
W 0N W 2N
x (6) X (3)
−1 −1
W 0N
x (1) X (4)
−1
W 0N W 1N
x (5) X (5)
−1 −1
W 0N W 2N
x (3) X (6)
−1 −1
W 0N W 2N W 3N
x (7) X (7)
−1 −1 −1
DIT Radix-2 FFT: Sơ đồ cánh
bướm
X m − 1 (p) Xm (p)
Wr
N

X m − 1 (q) Xm (q)
−W r
N

Hình: Sơ đồ cánh bướm cơ


bản

X m − 1 (p) Xm (p)

X m − 1 (q) Xm (q)
W rN
−1

Hình: Sơ đồ cánh bướm rút


gọn
Tính toán tại chỗ và đảo
bit

Xm(p) = X m − 1 (p)+ W rNXm−1(q)


Xm(q) = Xm−1 (p) − W rNXm−1(q)
Tính toán tại chỗ và đảo
bit

Xm(p) = X m − 1 (p)+ W rNXm−1(q)


Xm(q) = Xm−1 (p) − W rNXm−1(q)

Không cần có bộ nhớ trung


gian!
Tính toán tại chỗ và đảo
bit

Xm(p) = X m − 1 (p)+ W rNXm−1(q)


Xm(q) = Xm−1 (p) − W rNXm−1(q)

Không cần có bộ nhớ trung gian!


Khi đó, cần đảo thứ tự tại đầu vào (chặng
0): Thứ tự Nhị phân Đảo bit Giá trị
X0(0) 000 000 x (0)
X0(1) 001 100 x (4)
X0(2) 010 010 x (2)
X0(3) 011 110 x (6)
X0(4) 100 001 x (1)
X0(5) 101 101 x (5)
X0(6) 110 011 x (3)
X0(7) 111 111 x (7)
DIF Radix-2 FFT (phân chia theo tần số, cơ số
2)

NΣ−1
X (k) = x (n)WNkn ,k = 0, 1, · · · , (N −
n=0 1)
N/2− 1
Σ Σ1
N−
= x (n)WN +
kn
x (n)WNkn
m=0 n=N/2
N/2− 1 N/2− 1
Σ Σ kN/2
= x (n)WNkn + x (n + N/2)WN W kn
N
m=0 n=0
N/2− 1
Σ
= [x (n)+ (−1)k x (n + N/2)]W
N
m=0 kn
DIF Radix-2 FFT: Độ phức tạp tính
toán
Tách X (k) thành hai dãy có chỉ số chẵn,
lẻ:
N/2− 1
Σ
X (2k) = [x (n)+ x (n + N/2)]WN/2
m=0 kn
N/2− 1
Σ
X (2k + 1) = [x (n) − x (n + N/2)]W n W kn
N N/2
m=0
DIF Radix-2 FFT: Độ phức tạp tính
toán
Tách X (k) thành hai dãy có chỉ số chẵn,
lẻ:
N/2− 1
Σ
X (2k) = [x (n)+ x (n + N/2)]WN/2
m=0 kn
N/2− 1
Σ
X (2k + 1) = [x (n) − x (n + N/2)]W n W kn
N N/2
m=0

Độ phức tạp tính toán: (N/2) log2 N phép nhân phức


và N log2 N
phép cộng phức.
X m − 1 (p)
X m − 1 (q) Xm (q)
Xm (p) −1 W rN
Hình: Sơ đồ cánh
bướm
DIF Radix-2 FFT: Lưu đồ tín hiệu hoàn
chỉnh
x (0) X (0)

W 0N
x (1) X (4)
−1
W0
N
x (2) X (2)
−1
W 2N W 0N
x (3) X (6)
−1 −1
W 0N
x (4) X (1)
−1
W 1N W 0N
x (5) X (5)
−1 −1
W 2N W 0N
x (6) X (3)
−1 −1
W 3N W 2N W 0N
x (7) X (7)
−1 −1 −1
Bài về
nhà

1. Vẽ lưu đồ tín hiệu cho thuật toán FFT trường hợp N =


16, phân chia theo tần số / thời gian, cơ số 2.
2. Tìm hiểu thuật toán FFT cơ số 4.
3. Triển khai các thuật toán FFT đã học bằng ngôn ngữ C, so
sánh tốc độ.
4. Sử dụng bộ DFT N-điểm để tính DFT 2N-điểm của dãy
số thực.
5. Tính toán tối ưu DFT N-điểm của hai dãy số thực
(cùng chiều dài hữu hạn N).
ET4020 - Xử lý tín hiệu số
Chương 4: Thiết kế bộ lọc
số
TS. Đặng Quang Hiếu
http://dsp.edabk.org

Trường Đại học Bách Khoa Hà Nội


Viện Điện tử - Viễn thông

Năm học 2012 - 2013


Outlin
e

Tổng quan

Thiết kế bộ lọc FIR

Thiết kế bộ lọc IIR


Thiết kế bộ lọc chọn lọc tần
số
|H(ejω )|
1 + δ1
1 − δ1

δ2
0 ωp ωs ω
π
Các chỉ tiêu kỹ thuật:
◮ Tần số cắt (ωc ), và dải chuyển tiếp (ωp , ωs )
◮ Độ gợn sóng dải thông δ1
◮ Độ gợn sóng dải chắn δ2
Qui
trình
(1) Specifications: Xác định các chỉ tiêu kỹ thuật dựa trên ứng
dụng thực tế.
(2) Approximation: Tổng hợp hệ thống LTI có chỉ tiêu xấp xỉ với
yêu cầu đặt ra.
(3) Realization: Thực hiện hệ thống dựa trên các công cụ phần
cứng / phần mềm hiện có.
Khóa học này chỉ nghiên cứu #2: Tìm các tham số ak , br , M, N
sao cho đáp ứng tần số H(e j ω) của hệ thống LTI dưới đây có các
thông số xấp xỉ với các chỉ tiêu kỹ thuật mong muốn ωs , ωp , δ1, δ2.

ΣN MΣ−1

y (n) = − a k y (n − k) + br x (n − r )
k=1 r =0
Phân loại bộ lọc
số

Có thể thực hiện được trên thực tế:


◮ Hệ thống LTI
◮ Nhân quả
◮Ổn định
Phân loại theo chiều dài đáp ứng xung:
◮ Bộ lọc FIR
◮ Bộ lọc IIR
Phân loại theo cách thiết kế:
◮ Sử dụng các công thức
◮ Mang tính giải thuật
(vòng lặp)
Outlin
e

Tổng quan

Thiết kế bộ lọc FIR

Thiết kế bộ lọc IIR


Bộ lọc có đáp ứng xung chiều dài hữu
hạn

ΣM
y (n) = br x (n
−r)
=0≤ n ≤ (M − 1) 0,
bn,r 0
→ h(n) =
. n còn lại
Ưu điểm của bộ lọc FIR:
◮ Luôn ổn định

◮ Có thể thực hiện với hiệu năng cao (sử dụng FFT)
◮ Dễ tổng hợp bộ lọc pha tuyến tính
Khái niệm pha tuyến
tính

Tại sao pha tuyến tính?


◮ Trễ nhóm không đổi
◮ Độ phức tạp tính toán giảm

Khi nào pha tuyến tính?


Khái niệm pha tuyến
tính

Tại sao pha tuyến tính?


◮ Trễ nhóm không đổi
◮ Độ phức tạp tính toán giảm

Khi nào pha tuyến tính?


(i) h(n) đối xứng: h(n) = h(M − 1 − n)
. Σ
(ii) h(n) phản đối xứng: h(n) = −h(M − 1 − n) và h M −21
= 0
với M lẻ.
Phân loại bộ lọc pha tuyến
tính M lẻ M chẵn
h(n) đối xứng loại 1 loại 2
h(n) phản đối xứng loại 3 loại 4
 M−3
. Σ Σ2 . Σ
M−1
2 h
M−1 M−1
H1(e )

= e −j ω + 2 h(n) cos −n
2 2
ω

M −1 .n=0 Σ
M− 1 Σ M−1
H2(ej ω) = e −j ω 2 · 2h(n)
2 cos ω −n
2
n=0
M−3
. Σ
M−1 π Σ2 M−1
H3(ej ω) = e −j [ω 2 + 2] · 2h(n) sin ω −n
2
n=0
M −1 . Σ
M−1 π Σ M−1
H4(e )

= e −j [ω 2 + 2] · 2h(n)
2 sin ω −n
2
n=0
Vị trí các điểm
không

◮ Khi h(n) đối xứng / phản đối xứng, dễ dàng chứng minh được:

H(z ) = ±z − (M− 1) H(z − 1 )


Vị trí các điểm
không

◮ Khi h(n) đối xứng / phản đối xứng, dễ dàng chứng minh được:

H(z ) = ±z − (M− 1) H(z − 1 )


◮ Nếu H(z ) có nghiệm z1 thì cũng có các nghiệm sau:
z 1∗, 1 /z ,1 1/z 1∗
Vị trí các điểm
không

◮ Khi h(n) đối xứng / phản đối xứng, dễ dàng chứng minh được:

H(z ) = ±z − (M− 1) H(z − 1 )


◮ Nếu H(z ) có nghiệm z1 thì cũng có các nghiệm sau:
z 1∗, 1 /z ,1 1/z 1

◮ Biểu diễn vị trí các điểm không trên mặt phẳng phức?
Phương pháp cửa sổ - Khái niệm

Giả sử cần thiết kế bộ lọc có đáp ứng tần số mong muốn Hd (ej ω)
thỏa mãn các chỉ tiêu kỹ thuật. Khi đó:

hd (n) = 1 ∫ π Hd (ej ω )ej ωn


2
π −π dω
Tuy nhiên, trong trường hợp lý tưởng, hd (n) có chiều dài vô hạn
và không nhân quả → dịch đi (M − 1)/2 mẫu và nhân với hàm
cửa sổ w (n)
M−1
h(n) = hd (n − ) ·w
2
(n)
trong đó
w (n) = 0, ∀n < 0, ∀n > (M − 1)
Phương pháp cửa sổ - Các bước thiết
kế

(1) Cho các chỉ tiêu kỹ thuật : δ1, δ2, ωp , ωs


(2) Chọn loại cửa sổ và tính w (n) với chiều dài M, tâm đối xứng
tại (M − 1)/2.
(3) Tính các hệ số hd (n) của bộ lọc lý tưởng, sau đó tính các hệ
số h(n) nhờ trễ và nhân với hàm cửa sổ w (n).
(4) So sánh H(ej ω) với các chỉ tiêu kỹ thuật. Nếu không thỏa mãn
thì tăng M và quay lại bước (2).
Phương pháp cửa sổ - Cửa sổ chữ nhật
(1)
Xét một bộ lọc thông thấp lí tưởng vớic ω π=
3

. 1.4
Low−pass filter with rectangular window
1.4
Low−pass filter with rectangular window

1.2 1.2
window size M = 41 window size
M = 101

1 1

0.8 0.8
Magnitude

Magnitude
0.6 0.6

0.4 0.4

0.2 0.2

0 0
0 0.5 1 1.5 2 2.5 3 3.5 0 0.5 1 1.5 2 2.5 3 3.5
Frequency [rad] Frequency [rad]

Hiện tượng Gibbs:


∫ π − λ)
1 Hd (ej λ )W (ej (ω
H(e ) = π jω
−π
2
)d λ
Phương pháp cửa sổ - Cửa sổ chữ nhật
(2)
W (e j)ω= sin(ωM/2) −j ω(M−1)/2
e
sin(ω/2)

−π π ω

M
Phương pháp cửa sổ - Cửa sổ chữ nhật
(2)
W (e j)ω= sin(ωM/2) −j ω(M−1)/2
e
sin(ω/2)

Búp chính
Búp phụ

−π 2π π ω
M

Điều gì xảy ra khi M tăng?


Phương pháp cửa sổ - Cửa sổ chữ nhật
(2)
W (e j)ω= sin(ωM/2) −j ω(M−1)/2
e
sin(ω/2)

Búp chính
Búp phụ

−π 2π π ω
M

Điều gì xảy ra khi M tăng?


◮ Độ rộng búp chính giảm → độ rộng dải chuyển tiếp giảm
◮ Phần diện tích dưới các búp phụ ko thay đổi → độ gợn sóng
không thay đổi.
◮ Bậc bộ lọc tăng → độ phức tạp tính toán tăng
Phương pháp cửa sổ - Giải pháp

◮ Chọn loại cửa sổ thay đổi mềm hơn trên miền thời gian → các
búp phụ thấp hơn.
◮ Khi đó, dải chuyển tiếp rộng hơn.
◮ Tăng bậc của bộ lọc nhằm giảm độ rộng dải chuyển tiếp.
Phương pháp cửa sổ - Cửa sổ
Hamming

w (n) = 0.54 − 0.46 cos(2πn/(M −


1))
1.5
Rectangular window
1 Rectangular window
1
w1(n)

(ej)|
1
|W
0.5
0.5

0 0
−20 −10 0 10 20 30 40 −4 −3 −2 −1 0 1 2 3 4
n  [rad]

1.5
Hamming window
1 Hamming window
1
w2(n)

(ej)|
2
|W
0.5
0.5

0 0
−20 −10 0 10 20 30 40 −4 −3 −2 −1 0 1 2 3 4
n  [rad]
Phương pháp cửa sổ - Các loại cửa sổ
(1)
50 50

Rectangular window Hamming window


Magnitude [dB]

Magnitude [dB]
0
0
−50
−50
−100

−100 −150
0 1 2 3 4 0 1 2 3 4
Frequency [rad] Frequency [rad]

50 50

Hanning window Blackman window


Magnitude [dB]

0 Magnitude [dB] 0

−50 −50

−100 −100

−150 −150
0 1 2 3 4 0 1 2 3 4
Frequency [rad] Frequency [rad]
Phương pháp cửa sổ - Các loại cửa sổ
(2)

Loại cửa sổ Búp chính Búp chính / búp phụ 20 log10 δ tại đỉnh
Chữ nhật 4π/M -13 dB -21 dB
Hanning 8π/M -32 dB -44 dB
Hamming 8π/M -43 dB -53 dB
Blackman 12π/M -58 dB -74 dB
Phương pháp cửa sổ - Thiết kế

Một số điểm cần lưu ý khi thiết kế


◮ Tần số cắt nằm giữa dải chuyển tiếp
◮ Độ gợn sóng dải thông và dải chắn xấp xỉ bằng nhau. Thường
được tính đơn vị dB (20 log10(δ)).
◮ Độ rộng dải chuyển tiếp nhỏ hơn độ rộng búp chính.
◮ Khoảng cách giữa 2 đỉnh ở hai đầu dải chuyển tiếp xấp xỉ
bằng độ rộng búp chính.
Các phương pháp
khác

◮ Lấy mẫu tần số


◮ Các phương pháp lặp
Tự học!
Bài về
nhà

(1) Vẽ phổ bộ lọc pha tuyến các loại (1,2,3,4) và nhận xét?
(2) Vẽ dạng cửa sổ (trên miền thời gian), và phổ bộ lọc thông
thấp lý tưởng sử dụng các loại cửa sổ trên? So sánh?
(3) Vẽ phổ bộ lọc được thiết kế sử dụng phương pháp lấy mẫu tần
số cho các loại?
(4) Viết chương trình thiết kế bộ lọc bằng phương pháp lặp?
Outlin
e

Tổng quan

Thiết kế bộ lọc FIR

Thiết kế bộ lọc IIR


Bộ lọc
IIR

ΣN

ΣM
y (n) = − a k y (n − k) +
ΣM x (n − r )
br r−r
k=1 ) =
H(z r =0 bz
N
1 +Σ k=1 a k z −k
r =0
So sánh với bộ lọc FIR:
Hàm truyền
◮ Khi đạt:cần có pha tuyến tính, bộ lọc IIR có độ phức tạp
không
tính toán thấp hơn (với cùng chỉ tiêu kỹ thuật).
◮ Khó thiết kế
◮ Phải đảm bảo tính ổn định của hệ thống
Tổng hợp bộ lọc IIR từ bộ lọc tương
tự

◮ Khó tính trực tiếp các hệ số của bộ lọc từ các chỉ tiêu kỹ
thuật
◮ Kỹ thuật thiết kế bộ lọc tương tự đã được phát triển từ rất
lâu, có nhiều thành quả để tận dụng.
◮ Nhiều bộ lọc IIR tương tự có công thức đơn giản, do vậy, bộ
lọc số tương ứng dễ thực hiện.
Tổng hợp bộ lọc IIR từ bộ lọc tương tự: Nguyên

◮ Xấp xỉ hàm truyền đạt hoặc đáp ứng xung:


Ha(s), ha (t) → H(z ), h(n).
◮ Bảo toàn một số đặc tính cơ bản trên miền tần số:
(i) Ánh xạ trục ảo trên mặt phẳng s lên vòng tròn đơn vị trên
mặt phẳng z.
(ii) Tính ổn định: hệ tương tự có các điểm cực ở nửa bên trái
mặt
phẳng s → hệ số có các điểm cực nằm trong vòng tròn đơn vị ở
mặt phẳng z.
Phương pháp bất biến
xung
Lấy mẫu đáp ứng xung ha (t) → h(n) = ha(nTs ). Tương tự như
định lý lấy mẫu, H(e j ω) có dạng như hình vẽ (khi |Ωmax | ≤ π ). Ts
H a (jΩ)

−π/Ts 0 π/Ts Ω
H(ejω )

1
Ts

−2π 0 π 2π ω
−π
Phương pháp bất biến xung - Hàm truyền
đạtHàm truyền đạt của bộ lọc tương tự:
Ha (s) = Σ Ak
s − s pk
k

Biến đổi Laplace ngược, lấy mẫu chu kỳ Ts , có thể tính được hàm
truyền đạt của bộ lọc số:
Σ Ak
H(z ) =
k 1 − espk Ts z − 1
Phương pháp bất biến xung - Hàm truyền
đạtHàm truyền đạt của bộ lọc tương tự:
Ha (s) = Σ Ak
s − s pk
k

Biến đổi Laplace ngược, lấy mẫu chu kỳ Ts , có thể tính được hàm
truyền đạt của bộ lọc số:

H(z ) = Σ Ak
k 1− espk Ts z − 1

Ví dụ: Cho bộ lọc tương tự có hàm truyền đạt


4
Ha (s) =
(s + 3)(s + 5)

(a) Hãy tìm hàm truyền đạt H(z ) của bộ lọc số bằng phương
pháp bất biến xung
(b) Vẽ sơ đồ thực hiện bộ lọc số
Phương pháp bất biến xung - Tính ổn
địnhNếu điểm cực của bộ lọc tương tự nằm bên trái mặt phẳng phức:

spk = σ + jΩ, σ<0

thì điểm cực của bộ lọc số nằm trong vòng tròn đơn vị:

zpk = espk Ts → |zpk | = eσT s < 1

jΩ Im{z}

π/Ts

σ −1
1 Re{z}

−π/Ts
σ< σ>
0 0
Phương pháp bất biến xung - Tính
chất

◮ Duy trì được bậc và tính ổn định của bộ lọc tương tự


◮ Không áp dụng được cho tất cả các loại bộ lọc (thông cao,
chắn dải)
◮ Có thể xảy ra méo dạng đáp ứng tần số do chồng phổ
Phương pháp biến đổi song
tuyến
Tránh hiện tượng chồng phổ, ánh xạ toàn bộ trục ảo jΩ trên mặt
phẳng s thành vòng tròn đơn vị trên mặt phẳng z .

s= 2 ·1−z
−1
Ha (s) → H(z ),
T 1
+ z −1
với T bất kỳ.
◮ Trục ảo σ = 0 ↔ vòng tròn đơn vị |z | = 1.
◮ Nửa trái mặt phẳng phức σ < 0 ↔ phần mặt phẳng nằm
trong vòng tròn đơn vị |z | < 1.
So với bộ lọc tương tự:
◮ Đáp ứng tần số giống nhau
◮ Đáp ứng xung có thể rất khác nhau
Phương pháp biến đổi song tuyến: Tính
chấtNếu s = σ + jΩ và z = rej ω, dễ dàng tính được
T Ω=
ω = 2 arctan(2 Ω), tan(ω/2)
2
T
ω
π


Các bước thiết kế:
1. Xấp xỉ các chỉ tiêu kỹ thuật của bộ lọc số sang bộ lọc tương
tự
2. Thiết kế bộ lọc tương tự
3. Áp dụng biến đổi song tuyến
2 1 − z −1
s= ·
T 1 + z −1
Phương pháp tương đương vi
phân

Xấp xỉ: phương trình vi phân → phương trình sai phân, ví dụ:
d
1 ya (t) → Ts [y (n) − y (n −
1)]
dt
Hàm truyền đạt:

1 − z −1
Ha (s) → H(z ), s=
Ts
Phương pháp biến đổi z thích
ứng

Ánh xạ các điểm cực và điểm không:


QM
(s − s 0r)
Ha (s) = Q rN =1 (s − s )
k=1 pk
QM
(1 − es0r Ts z − 1 )
→ H(z ) = Q N
r =1
k=1 (1 − espk Ts z − 1 )

You might also like