You are on page 1of 30

dce

2011

Chương 6
Giải thuật cho biến đổi Fourier
(FFT)
BK
TP.HCM

©2011, TS. Đinh Đ ức Anh Vũ


CuuDuongThanCong.com https://fb.com/tailieudientucntt
dce
2011
Nội dung
Tính
DFT & IDFT

Tính Biến đổi


trực tiếp WN

Lọc
Chia-Trị
tuyến tính

Cơ số 2 Cơ số 4 Tách cơ số Goertzel Chirp-z

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
2
dce
2011
DFT & IDFT
• Tính DFT: xác định chuỗi N giá trị phức {X(k)} khi biết trước chuỗi {x(n)}
chiều dài N N −1

DFT X (k ) = ∑ x(n)WNkn 0 ≤ k ≤ N −1
n =0
N −1
1
IDFT x ( n) =
N
∑ X
k =0
( k )W − kn
N 0 ≤ n ≤ N −1

– Giải thuật tính DFT cũng được áp dụng cho việc tính IDFT
 N −1

 X R (k ) = ∑ [ xR (n) cos( N ) + xI (n) sin( N )]


2πkn 2πkn
• Tính trực tiếp  n =0
– N2 phép nhân phức  N −1
 X (k ) = − [ x (n) sin( 2πkn ) − x (n) cos( 2πkn )]
– N(N-1) phép cộng phức
→ Độ phức tạp : O(N2)  I ∑
n =0
R N I N

• Biến đổi WN
Giải thuật tính DFT tối ưu mỗi phép toán
– 2N2 phép tính lượng giác
– 4N2 phép nhân số thực theo những cách khác nhau
– 4N(N-1) phép cộng số thực Doi xung WNk + N /2 = −WNk
– Một số phép toán chỉ số
và địa chỉ để nạp x(n) Tuan hoan WNk + N = WNk
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
3
dce
2011
Phương pháp chia-trị (1)
• Nguyên tắc: phân rã nhỏ việc tính DFT N điểm thành việc tính các DFT kích thước
nhỏ hơn → các giải thuật FFT
• Phương pháp
– Giả sử N=L.M
– Lưu trữ x(n) vào mảng 2 chiều L × M (l: chỉ số hàng, m: chỉ số cột)
n→ 0 1 2 … N-1
x(0) x(1) x(2) … x(N-1)

l
0 1 … M-1
m
0 x(0,0) x(0,1) … x(0,M-1)
1 x(1,0) x(1,1) … x(1,M-1)
– Cách lưu trữ 2 x(2,0) x(2,1) … x(2,M-1)
• Theo dòng n = Ml + m
• Theo cột n = l + mL … … … …
L-1 x(L-1,0) x(L-1,1) … x(L-1,M-1)

– Tương tự, các giá trị DFT X(k) tính được cũng sẽ được lưu trữ trong ma trận L × M
(p: chỉ số hàng, q: chỉ số cột)
• Theo dòng k = Mp + q
• Theo cột k = p + qL

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
4
dce2011
Phương pháp chia-trị (2)
N −1
X (k ) = ∑ x(n)WNkn 0 ≤ k ≤ N −1
n =0
Với: M −1 L −1
x(n) : theo cột X ( p, q ) = ∑∑ x(l , m)WN( Mp + q )( mL +l )
X(k) : theo hàng m =0 l =0
WNNmp = 1
WN( Mp + q )( mL +l ) = WNMLmpWNmLqWNMplWNlq WNmqL = WNmq/ L = WMmq
WNMpl = WNpl/ M = WLpl
 lq  M −1
L −1
mq  
X ( p, q ) = ∑ WN  ∑ x(l , m)WM  WLlp (1): Tính L DFT M điểm
l =0   m =0  Nhân phức : LM2
Cộng phức : LM(M-1)
DFT M điểm (2): Tính G(l,q)
1 Nhân phức : LM
F(l,q)
(3): Tính X(p,q)
2 Nhân phức : ML2
G(l,q)
Cộng phức : ML(L-1)
 Độ phức tạp
3 DFT L điểm Nhân phức : N(M+L+1)
X(p,q) Cộng phức : N(M+L-2)
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5
dce
2011
Phương pháp chia-trị (3)
• Hiệu quả
PP tính trực tiếp PP chia-trị
• Nhân phức : N2 • Nhân phức : N(M+L+1)
• Cộng phức : N(N-1) • Cộng phức : N(M+L-2)
N=1000 → L=2, M=500
106 nhân phức → 503,000 (~ N/2)
• PP chia-trị rất hiệu quả khi N= r1r2r3…rv
– Phân rã nhỏ hơn đến (v-1) lần
• Giải thuật
n = l + mL n = Ml + m
k = Mp + q k = qL + p
Giải thuật 1 Giải thuật 2
1. Lưu trữ t/h theo cột 1. Lưu trữ t/h theo hàng
2. Tính DFT M điểm của mỗi hàng 2. Tính DFT L điểm của mỗi cột
3. Nhân ma trận kết quả với hệ số pha WNlq 3. Nhân ma trận kết quả với hệ số pha WNpm
4. Tính DFT L điểm của mỗi cột 4. Tính DFT M điểm của mỗi hàng
5. Đọc ma trận kết quả theo hàng 5. Đọc ma trận kết quả theo cột

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
6
dce
2011
Phương pháp chia-trị (4)
• Mô hình tính toán DFT 6 điểm thông qua việc tính DFT 3 điểm và DFT 2 điểm
W6lq

x(4) X(2)

x(2)x(5) X(5)
X(1)

DFT 2 điểm
x(0)x(3) X(4)
X(0)

x(1) X(3)

• Giải thuật tính FFT cơ số 2


– Nếu N = r1r2r3…rv = rv → mô hình tính DFT có cấu trúc đều (chỉ dùng 1 DFT r điểm)
– r = 2 → FFT cơ số 2
– Chọn M = N/2 và L = 2

x(0) x(1) x(2) … … … … x(N-1)


Giải thuật
m=0 m=1 m=M-1
chia theo thời gian l=0 x(N-2) f1(2n)
x(0) x(2) …
n= 0,1, …, N/2-1
l=1 x(1) x(3) … x(N-1) f2(2n+1)

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
7
dce
2011
FFT cơ số 2 (1)
N −1
X (k ) = ∑ x(n)WNkn k = 0,1,..., N − 1
n =0

= ∑ x (
n even
n )W kn
N + ∑ x ( n )W kn
N
n old
( N / 2 ) −1 ( N / 2 ) −1
= ∑ x(2m)W 2 mk
N + ∑ x(2m + 1)W k ( 2 m +1)
N
m =0 m =0 WN2 = WN / 2
( N / 2 ) −1 ( N / 2 ) −1
X (k ) = ∑
m =0
f1 (m)W km
N /2 +W k
N ∑
m =0
f 2 (m)WNkm/ 2

= F1 (k ) + WNk F2 (k ) k = 0,1,..., N − 1
F1(k), F2(k) tuần hoàn
f1 (m) ← → F1 (k ) k = 0,1,..., N / 2
DFTN / 2
chu kỳ N/2
f 2 (m) ← → F2 (k )
DFTN / 2
k = 0,1,..., N / 2 F1(k+ N/2) = F1(k)
F2(k+ N/2) = F2(k)

 X ( k ) = F1 ( k ) + W k
N F2 ( k ) k = 0,1,.., N2 − 1 WNk + N / 2 = −WNk


 X ( k + N
2 ) = F 1 ( k ) − W k
N F2 ( k ) k = 0,1,.., N2 − 1
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
8
dce
2011
FFT cơ số 2 (2)
G1 (k ) = F1 (k ) k = 0,1,.., N2 − 1

G2 (k ) = WNk F2 (k ) k = 0,1,.., N2 − 1
G1(k) X(k)
G2(k) DFT2 X(k+ N/2)

 X (k ) = G1 (k ) + G2 (k ) k = 0,1,..., N2 − 1 k=0,1,…,(N/2-1)


 X ( k + 2 ) = G1 ( k ) − G2 ( k )
N
k = 0,1,..., N2 − 1

DFT
2 điểm

DFT
2 điểm
DFT
2 điểm
DFT
2 điểm

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9
dce
2011
FFT cơ số 2 (3)
• Tiếp tục phân f1(n) và f2(n) thành các chuỗi N/4 điểm
v11 (n) = f1 (2n) n = 0,1,..., N4 − 1

v12 (n) = f1 (2n + 1) n = 0,1,..., N4 − 1

v21 (n) = n = 0,1,..., N4 − 1
f 2 ( 2n ) DFT
vij(n) Vij(k)
v (n) = N/4 điểm
 22 f 2 (2n + 1) n = 0,1,..., N4 − 1
 F1 (k ) = V11 (k ) + WNk / 2V12 (k ) k = 0,1,..., N4 − 1

 F1 (k + 4 ) = V11 (k ) − WN / 2V12 (k ) k = 0,1,..., N4 − 1
N k


 2
F ( k ) = V21 ( k ) + W k
N / 2V22 ( k ) k = 0,1,..., N4 − 1
 F (k + N ) = V (k ) − W k V (k ) k = 0,1,..., N4 − 1
 2 4 21 N / 2 22

• Hiệu quả
DFT trực tiếp N=2v điểm Các DFT 2 điểm
FFT cơ số 2
Nhân phức: N2 Nhân phức: (N/2)log2N
Cộng phức: N2 – N Cộng phức: Nlog2N

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
10
dce
2011
FFT cơ số 2 (4)
• Ví dụ: tính DFT 8 điểm
x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7)

x(0) x(2) x(4) x(6)


Phân theo thời gian

x(1) x(3) x(5) x(7)

[0,1,2,3,4,5,6,7]
x(0) x(4)

x(2) x(6)
[0,2,4,6] [1,3,5,7]
x(1) x(5)

x(3) x(7) [0,4] [2,6] [1,5] [3,7]


DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
11
dce
2011
FFT cơ số 2 (5)
• Khối tính toán cơ bản cho DFT 2 điểm (hình con bướm)

a A = a+WN’b
Độ phức tạp
• 1 nhân phức
b B = a–WN’b • 2 cộng phức
W N’ –1

N= 2v:
+ Log2N : tầng tính toán
+ N/2 : khối tính toán cơ bản cho mỗi lớp
Bộ nhớ:
+ Vào : (a,b) – số phức
+ Ra : (A,B) – số phức
+ Có thể lưu (A,B) đè lên (a,b)
 Chỉ cần N ô nhớ phức (2N ô nhớ thực)
 Tính toán tại chỗ
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
12
dce
2011
FFT cơ số 2 (6)
x(0) X(0)

x(4) X(1)
0 -1
W 8

x(2) X(2)
W0 -1
8

x(6) X(3)
W 0 -1 W2 -1
8 8

x(1) X(4)
W0 -1
8

x(5) X(5)
W 0 -1 W1 -1
8 8

x(3) X(6)
W0 -1 W2 -1
8 8

x(7) X(7)
W 0 -1 W2 -1 W3 -1
8 8 8
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
13
dce
2011
Baseline Parallel Architecture
Size 16 8192 ∆
1 1 1 1
Pins 448 229K
2 2 2 2
Fly 32 53K
3 3 3 3
Mult
4 4 4 4
Add
5 5 5 5
Shift 0 0
6 6 6 6
7 7 7 7
8 8 8 8 Parallel FFT
9 9 9 9  Butterfly structure
10 10 10 10  Removes redundant
11 11 11 11 calculation
12 12 12 12
13 13 13 13
14 14 14 14
15 15 15 15
16 16 16 16

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
14
dce
2011
Parallel-Pipelined Architecture
Size 16 8192 ∆
1 1 1 1
Pins 448 229K
2 2 2 2
Fly 32 53K
3 3 3 3
Mult 96 159K
4 4 4 4
Add 288 480K
5 5 5 5
Shift 0 0
6 6 6 6
7 7 7 7
8 8 8 8 A pipelined version
9 9 9 9  IO Bound
10 10 10 10  100% Efficient
11 11 11 11
12 12 12 12
13 13 13 13
14 14 14 14
15 15 15 15
16 16 16 16

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
15
dce
2011
FFT cơ số 2 (7)
• Thứ tự chuỗi dữ liệu vào sau khi phân (v-1) lần
– Biểu diễn các chỉ số ở dạng nhị phân
– Chuỗi sau khi phân chia sẽ là lấy theo thứ tự đảo các bit

Bộ Địa Phân Bộ Địa Phân Bộ Địa


nhớ chỉ chia nhớ chỉ chia nhớ chỉ
x(0) 000 x(0) 000 x(0) 000
x(1) 001 x(2) 010 x(4) 100
x(2) 010 x(4) 100 x(2) 010
x(3) 011 x(6) 110 x(6) 110
x(4) 100 x(1) 001 x(1) 001
x(5) 101 x(3) 011 x(5) 101
x(6) 110 x(5) 101 x(3) 011
x(7) 111 x(7) 111 x(7) 111

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
16
dce
2011
FFT cơ số 2 (8)
• Phân chia theo tần số
– Phương pháp chia và trị
– M = 2, L = N/2
– Chuỗi dữ liệu nhập được sắp xếp theo cột
– Phân chia X(k) thành X(2k) và X(2k+1)
– Sau đó có thể phân chia tiếp tục mỗi X(k chẵn) và X(k lẻ)
x(0) X(0)
a A = (a+b) WN’
x(1) DFT X(2)

x(2) 4 điểm X(4) b B = (a–b)WN’


–1 W N’
x(3) X(6)

x(4) X(1)
-1 0
W 8
x(5) X(3)
1 DFT
-1 W
x(6)
8 4 điểm X(5)
-1 2
W 8
x(7) X(7)
-1 3
W 8
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
17
dce
2011
FFT cơ số 4 (1)

x(0) x(2) x(4) … … … x(N-1) N = 4v

l,p = 0,1,2,3 n = 4m + l
L = 4, M = N/4
m,q = 0,1,…,N/4 – 1 k = (N/4)p + q

m=0 m=1 m=(N/4)-1


l=0 x(0) x(4) … … x(N-4) x(4n)
l=1 x(1) x(5) … … x(N-3) x(4n+1)
n = 0,1,…,N/4-1
l=2 x(2) x(6) … … x(N-2) x(4n+2)

l=3 x(3) x(7) … … x(N-1) x(4n+3)

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
18
dce
2011
FFT cơ số 4 (2)
 lq  M −1
L −1
mq   lp
X ( p, q ) = ∑ WN  ∑ x(l , m)WM  WL
l =0   m =0 
[ ]
3
X ( p, q ) = ∑ WNlq F (l , q ) W4lp p = 0,1,2,3
l =0
DFT N/4 điểm
N /4
l = 0,1,2,3
F (l , q ) = ∑ x (l , m)WNmq/ 4 
m =0  q = 0,1,.., ( 4 − 1)
N

 x(l , m) = x(4m + l )

 X ( p, q ) = X ( 4 p + q )
N

 X (0, q )  1 1 1 1   WN0 F (0, q ) 


 X (1, q )  1 − j  
 = −1 j   WNq F (1, q ) 
 X (2, q ) 1 − 1 1 − 1  WN2 q F (2, q ) 
     3q 
 X (3, q )  1 j − 1 − j  WN F (3, q ) 
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
19
dce
2011
FFT cơ số 4 (3)
WN0

-j
-1
WNq
j
-1
1
WN2 q -1

j
-1 0
-j
WN3q q

2q

Dạng rút gọn


3q

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
20
dce
2011
FFT cơ số 4 (4)
Độ phức tạp: 1 khối tính toán cần
+ 3 nhân phức
+ 12 cộng phức
N=4v
+ Tầng tính toán : v = log4N
+ Mỗi tầng có : N/4 khối tính toán
3vN/4 = (3N/8)log2N : Nhân phức (giảm 25% vs FFT2)
12vN/4 = (3N/2)log2N : Cộng phức (tăng 50% vs FFT2)
Biểu diễn lại nhân ma trận
 X (0, q ) 1 0 1 0  1 0 1 0   WN0 F (0, q ) 
 X (1, q )  0     q 
 = 1 0 − j  1 0 − 1 0   WN F (0, q ) 
 X (2, q ) 1 0 − 1 0  0 1 0 1  WN2 q F (0, q )
      3q 
 X (3, q )  0 1 0 j  0 1 0 − 1 WN F (0, q ) 
(3N/8)log2N : Nhân phức (giảm 25% vs FFT2)
Nlog2N : Cộng phức (bằng FFT2)
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
21
dce
2011
Hiện thực các giải thuật FFT
• FFT cơ số 2
– Tính toán hình bướm: (N/2)log2N lần
– Hệ số quay WNk: được tính một lần và lưu trong bảng
– Bộ nhớ: 2N nếu muốn việc tính toán được thực hiện tại chỗ
• 4N nếu muốn đơn giản hóa các tác vụ chỉ số và điều khiển; đồng thời cho phép
chuỗi nhập và xuất theo đúng thứ tự
• IDFT 1 N −1
x ( n) =
N
∑ X
k =0
( k )W − kn
N 0 ≤ n ≤ N −1

– Khác nhau cơ bản giữa việc tính DFT và IDFT là hệ số 1/N và dấu của hệ số
pha WN
• Đảo chiều sơ đồ tính DFT, đổi dấu hệ số pha, và chia kết quả cuối cùng cho N →
IDFT
• DFT với số điểm khác 2v hoặc 4v → đệm thêm các số 0
• Độ phức tạp
– Tác vụ số học (nhân phức, cộng phức)
– Cấu trúc hiện thực của giải thuật (qui tắc vs bất qui tắc)
– Kiến trúc của các bộ DSPs (xử lý song song các tác vụ)
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
22
dce
2011
Ứng dụng của các giải thuật FFT
• Tính DFT của 2 chuỗi thực
– x1(n) và x2(n): chuỗi thực độ dài N cần tính DFT
– Định nghĩa chuỗi x(n) = x1(n) + jx2(n) 0≤n≤N–1
– X(k) = X1(k) + jX2(k) (tính tuyến tính của DFT)

x ( n) + x * ( n)
x1 (n) =
2
1
2
{
X 1 (k ) = DFT [x(n)] + DFT x* (n) [ ]}
x2 ( n ) =
x ( n) − x * ( n)
2j
{
X 2 (k ) = DFT [x(n)] − DFT x* (n)
1
2
[ ]}
X 1 (k ) = 1
[X (k ) + X ( N − k )]
*

x* (n) ← → X * ( N − k )
DFTN 2

X 2 (k ) = 1
2 [X (k ) − X ( N − k )]
*

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
23
dce
2011
Ứng dụng của các giải thuật FFT
• Tính DFT của chuỗi thực 2N điểm
– g(n): chuỗi thực độ dài 2N cần tính DFT
– Tách thành 2 chuỗi x1(n) = g(2n) và x2(n) = g(2n+1) 0 ≤ n ≤ N-1
– Định nghĩa chuỗi x(n) = x1(n) + jx2(n) 0 ≤ n ≤ N-1
– X(k) = X1(k) + jX2(k)(tính tuyến tính của DFT)
X 1 (k ) = 1
2
[X (k ) + X ( N − k )]
*

X 2 (k ) = 1
2
[X (k ) − X ( N − k )]
*

N −1 N −1
G (k ) = ∑ g (2n)W22Nnk + ∑ g (2n + 1)W2(N2 n +1) k
n =0 n =0
N −1 N −1
= ∑ x1 (n)W nk
N +W k
2N ∑ 2 N
x ( n )W nk

n =0 n =0

G (k ) = X 1 (k ) + W2kN X 2 (k ) k = 0,1,  , N − 1
G (k + N ) = X 1 (k ) − W2kN X 2 (k ) k = 0,1,  , N − 1
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
24
dce
2011
Ứng dụng của các giải thuật FFT
• Lọc tuyến tính các chuỗi dữ liệu dài
– Overlap-add
DFT + FFT
– Overlap-save
• Phương pháp
– h(n) – Đáp ứng xung đơn vị của bộ lọc (chiều dài M)
• Được đệm thêm L-1 số không sao cho N = L + M – 1 = 2v
• H(k): DFT N điểm của h(n), theo thứ tự đảo nếu h(n) được sắp theo thứ tự thuận
(Giải thuật FFT suy giảm theo tần số)
– xm(n) – khối dữ liệu chiều dài L (đã được phân cắt)
• Được đệm thêm M–1 điểm (giá trị tùy theo PP lọc được dùng)
• Xm(k): DFT N điểm của xm(n), cũng theo thứ tự đảo (Giải thuật FFT suy giảm theo
tần số)
– Ym(k) = H(k)Xm(k)
• H(k) và Xm(k) cùng có thứ tự đảo → Ym(k) theo thứ tự đảo
• ym(n) = IDFTN{Ym(k)} sẽ đúng theo thứ tự thuận nếu dùng giải thuật FFT suy giảm
theo thời gian
– Không cần thiết đảo vị trí các dữ liệu trong việc tính DFT và IDFT
• Tính tương quan (tương tự)

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
25
dce
2011
Phương pháp lọc tuyến tính
• FFT không hiệu quả khi tính DFT (IDFT) tại một số điểm (< log2N) → tính
trực tiếp
• Giải thuật Goertzel
– Dựa vào tính chu kỳ của WNk và biểu diễn việc tính toán DFT như lọc tuyến
tính
N −1 N −1
X (k ) = W − kN
N ∑ x(m)W
m =0
km
N = ∑ x(m)WN− k ( N − m )
m =0
1
N −1 H k ( z) =
Đăt yk (n) = ∑ x(m)WN− k ( n − m ) = x(n) * hk (n) 1 − WN− k z −1
m =0

vói hk (n) = WN− knu (n) Một pole trên vòng tròn đơn vị
tại tần số ωk=2πk/N
⇒ X ( k ) = y k ( n) n = N
Việc tính DFT tại một điểm k có thể
Thay vì tính tổng chập trực tiếp, ta có thể dùng PTSP được thực hiện bằng cách cho t/h
yk (n) = WN− k yk (n − 1) + x(n) yk (−1) = 0 đi vào bộ cộng hưởng một pole
tại tần số ωk=2πk/N
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
26
dce
2011
Giải thuật Goertzel
• Kết hợp từng cặp các bộ cộng hưởng có pole liên hợp phức
1 − WN− k z −1
H k ( z) =
1 − 2 cos(2πk / N ) z −1 + z − 2
• Hiện thực bằng dạng chuẩn tắc (dạng II)
vk (n) = 2 cos 2Nπk vk (n − 1) − vk (n − 2) + x(n) n = 0,1,..., N
yk (n) = vk (n) − WNk vk (n − 1) n=N
vk(n)
– Với đ/k đầu + +
vk (−1) = vk (−2) = 0 x(n)

yk(n)
Z–1
• vk(n) được lặp lại cho n = 0, 1, …, N 2 cos( 2Nπk ) Wnk
– Mỗi vòng cần 1 phép nhân thực +
• yk(n) được tính duy nhất một lần cho n = N Z–1
–1
• Nếu x(n) là t/h thực, cần N+1 phép nhân thực để tính X(k) và X(N-k)
{do tính đối xứng}
• Giải thuật Goertzel chỉ thích hợp khi số giá trị DFT cần tính khá nhỏ (≤ log2N)

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
27
dce2011
Giải thuật BĐ Chirp-z (1)
• DFT N điểm ~ X(zk) với zk = ej2πkn/N , k=0,1,…,N-1 (các điểm cách đều trên vòng
tròn đơn vị) N −1
• BĐ Z của x(n) tại các điểm zk X ( z k ) = x(n) z k− n ∑
k = 0,1,..., L − 1
n =0

• Nếu zk = rej2πkn/N (zk là N điểm cách đều nhau trên vòng tròn bk r)
N −1
X ( z k ) = ∑ [ x(n)r − n ]e − j 2πkn / N k = 0,1,..., N − 1
n =0

– Việc tính DFT có thể được thực hiện bằng giải thuật FFT cho chuỗi x(n)r-n
jθ 0
• z
Tổng quát, zk nằm trên cung xoắn ốc bắt đầu từ điểm 0 = r0 e (đi vào hoặc
jθ 0 jφ 0 k
đi ra gốc toạ độ) z k = r0 e ( R0 e ) k = 0,1,  , L − 1
Vòng tròn Im(z) Im(z) Im(z) Im(z)
đơn vị
r0 r0
θ0
Re(z) Re(z) Re(z) Re(z)

R0 = r0 = 1 R0 = 1, r0 < 1 R0 < 1 R0 > 1


Φ0 = θ0 = 0 Φ0 = θ0 = 0
DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
28
dce
2011
Giải thuật BĐ Chirp-z (2)
y (k )
X ( zk ) = k = 0,1, , L − 1 BĐ chirp-z
h( k )
V = R0 e jφ0
h( n) = V n2 / 2

jθ 0 − n −n2 / 2
g (n) = x(n)(r0 e ) V
N −1
y ( k ) = ∑ g ( n) h( k − n) k = 0,1,  , L − 1
n =0

jφ 0 n 2 / 2
R0 = 1 ⇒ h(n) = e = e j ( nφ 0 / 2 ) n ≡ e j ω n

ω = nφ0 / 2 Tần số của t/h mũ phức h(n), tăng tuyến tính theo thời gian
→ h(n): chirp signal

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
29
dce
2011
Giải thuật BĐ Chirp-z (3)
• Xác định tổng chập vòng của chuỗi g(n) N điểm và chuỗi h(n) M điểm (M > N)
– N-1 điểm đầu là các điểm lặp lại
– M-(N-1) điểm còn lại chứa kết quả
N −1
y ( k ) = ∑ g ( n) h( k − n) k = 0,1,  , L − 1
n =0
• Giả sử M = L + (N–1)
• M điểm của chuỗi h(n) được xác định –(N–1) ≤ n ≤ (L–1)
• Định nghĩa chuỗi M điểm h1(n) = h(n–N+1) n = 0,1,…,M–1
• H1(k) = DFTM{h1(n)}
• G(k) = DFTM{g(n)} (sau khi đã đệm thêm vào g(n) L-1 số 0)
• Y1(k) = G(k)H(k) → y1(n) = IDFT{Y1(k)} n = 0,1,…,M–1
• N-1 điểm đầu tiên của y1(n) là các điểm lặp → loại bỏ chúng
• Các điểm kết quả là giá trị của y1(n) khi N–1 ≤ n ≤ M–1
– y(n) = y1(n+N-1) n = 0,1,…,L–1
• X(zk)= y(k)/h(k) k = 0,1,…,L–1

DSP – Giải thuật cho Biến đổi Fourier ©2011, Đinh Đức Anh Vũ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
30

You might also like