1. Trang chủ
  2. » Giáo án - Bài giảng

xu ly so tin hieu SO LUONG DUY KHANH

4 436 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các Thuật Toán Tính DFT Nhanh (FFT)
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ Thuật Điện Tử
Thể loại Bài Tiểu Luận
Thành phố Hà Nội
Định dạng
Số trang 4
Dung lượng 157 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

4.5 các thuật toán tính DFT nhanh FFTTính trực tiếp DFT khi độ dài N lớn mất nhiều thời gian, ngay cả khi dùng máy tính.. Có rất nhiều thuật toán FFT khác nhau, do hạn chế về thời lượng

Trang 1

4.5 các thuật toán tính DFT nhanh (FFT)

Tính trực tiếp DFT khi độ dài N lớn mất nhiều thời gian, ngay cả khi dùng máy tính Để rút ngắn thời gian tính DFT, người ta xây dựng các thuật toán tính DFT nhanh, chúng được viết tắt theo tiếng Anh là FFT (Fast Fourier

Transform) Có rất nhiều thuật toán FFT khác nhau, do hạn chế về thời lượng nên ở đây chỉ trình bầy thuật toán FFT phân chia theo thời gian

4.5.1 Cơ sở của thuật toán FFT phân chia theo thời gian

Cơ sở của thuật toán FFT phân chia theo thời gian là chia nhỏ dãy x(n) N có độ dài N thành hai dãy có độ dài nhỏ hơn bằng cách phân tích N thành tích của hai thừa số nguyên :

Nếu độ dài N nhỏ hơn tích số đã chọn thì có thể thêm vào dãy x(n) N các mẫu có giá trị 0 để tăng N

Bằng cách như vậy, có thể chuyển việc lưu giữ trong bộ nhớ dãy x(n) NN phần tử (hình 4.19), thành mảng x(m,

l) có M cột và L hàng với M L = N phần tử Nếu xắp xếp dãy x(n) N trong mảng x(m, l) theo cột như trên hình 4.20 , thì chỉ

số n tương ứng của dãy x(n) N sẽ là :

n = 0 1 2 (N –1)

x[0] x[1] x[2] x[ N -1]

Hình4.19: Lưu giữ trong bộ nhớ dãy x(n) N

.

.

.

Hình4.20: Mảng x(m, l) xắp xếp theo cột : n = l + m L

Tương tự như vậy, cũng lưu giữ dãy X (k) N bằng mảng X (p, q) , có M cột và L hàng với M L = N phần tử Khi dãy

x(n) N đã được xắp xếp trong mảng x(m, l) theo cột như trên hình 4.20, thì dãy X (k) N phải được xắp xếp trong mảng X (p, q)

theo hàng như trên hình 4.21, khi đó chỉ số k tương ứng của dãy X (k) N là :

.

.

.

(L-1) X [(L-1)M] X [(L-1) (M+1)] X [(L-1) (M+2)] X [LM-1]

Hình4.21: MảngX (p, q) xắp xếp theo hàng : k = p M + q.

Do đó biểu thức của DFT có thể được biểu diễn như một tổng đúp trên các phần tử của hai mảng trên :

 

 1 0

1 0

).

).(

).

, ( )

, (

M

m

L l

mL l q pM j

e m l x q

p

[4.5-4]

Thay 12 N, hệ số pha được tính cụ thể như sau :

N N

N M N

M

mL l q pM j

e e

e e

e (  ).( ).2  . .2.  .2.  .2.  .2

Trong đó : ejpl.M.2Nejp.2L.l

1

2

.

Trang 2

m jq

e

e .2   .2.

Vậy : e j(pM q).(l mL).2N e jq.2N.l e jq.2M.m e jp 2L.l

.

Do đó có thể viết lại [4.5-4] dưới dạng :

1 0

1

0

.

).

, (

) ,

l

l L jp m

m jq l

jq

e e

m l x e

q p

M

M N

Theo biểu thức [4.5-5] , thay vì phải tính DFT N điểm, cần tính các DFT ML điểm, các bước thực hiện thuật toán FFT trên như sau :

1. Chuyển dãy x(n) N thành mảng x(m, l) xắp xếp theo cột, với kích thước mảng là M L = N

2 Tính L lần DFTM điểm cho các hàng x(m, l) , với l = 0  ( L -1) để nhận được mảng F (l, q) :

1 0

.2 )

, ( )

,

(

M

M m

m jq

e m l x q

l

3 Tính các phần tử của mảng G (l, q) :

l

jq N

e q l q

G( , )  ( , ).  .2. [4.5-7]

4 Tính M lần DFTL điểm cho các cột G (l, q), với q = 0  ( M -1) để nhận được mảng X (p, q) :

1 0

.2 )

, ( )

,

l

l L jp

e q l q

5 Chuyển mảng X (p, q) thành dãy X (k) N xắp xếp theo hàng.

Thoạt trông có cảm giác tính DFT theo thuật toán FFT như trên là phức tạp hơn Tuy nhiên, hiệu quả của FFT sẽ chỉ thấy được khi so sánh số lượng các phép tính cần thực hiện Chẳng hạn, so sánh trên số lượng các phép tính nhân và cộng số thực Bước 2 cần tính L lần DFT M điểm, do đó cần thực hiện 2.L.M 2 phép nhân số thực , và 2.L.M ( M - 1) phép

cộng số thực Bước 3 cần thực hiện 2.L.M phép nhân số thực Bước 4 cần phải tính M lần DFT L điểm, do đó cần thực hiện

2.M.L2 phép nhân số thực , và 2.M.L ( L - 1) phép cộng số thực Tổng cộng số lượng phép nhân và phép cộng của thuật toán

FFT phân chia theo thời gian là :

- Phép nhân : 2.L.M 2 + 2.L.M + 2.M.L 2 = 2.N ( M + L + 1)

- Phép cộng : 2.L.M ( M - 1) + 2.M.L ( L - 1) = 2.N ( M + L - 2)

Như vậy, so với tính trực tiếp DFT thì tính theo thuật toán FFT đã giảm số phép nhân từ 2.N 2 xuống còn 2.N ( M +

L + 1), và số phép cộng thì giảm từ 2.N ( N - 1) xuống còn 2.N ( M + L - 2) Để thấy rõ hơn, hãy xem so sánh số lượng các

phép nhân trên bảng 4.19

Bảng 4.19 : Số phép nhân khi tính trực tiếp DFT và tính theo FFT

N nhân khi tínhSố phép

trực tiếp

FFT với M = N /2 FFT với M = N /4

Số phép nhân

So với tính trực tiếp giảm còn

Số phép nhân

So với tính trực tiếp giảm còn

Bảng 4.19 cho thấy, khi độ dài N tính DFT càng tăng thì khối lượng tính DFT theo thuật toán FFT càng giảm Hơn nữa, tính theo thuật toán FFT với M = N /4 thì khối lượng tính nhỏ hơn tính theo FFT với M = N /2 Tuy nhiên, khi N tăng rất lớn, thì mức lợi về khối lượng tính không tăng lớn tương ứng

Trên cơ sở của thuật toán FFT như trên, có thể tiếp tục phân chia thành các FFT nhỏ hơn, tức là tính FFT nhiều lớp Khi số lớp tăng lên thì mức lợi về khối lượng tính toán cũng tăng Để phân chia FFT thành nhiều lớp thì phải phân tích N thành tích của các thừa số nguyên tố dạng : NM1.M2.M3 M r

Trong trường hợp M1M2 M3  M rM , thì ta có : NM r

Khi M = 2 người ta gọi là thuật toán FFT cơ số hai, khi M = 4 người ta gọi là thuật toán FFT cơ số bốn, chúng đều

có thể được thực hiện theo một lớp hoặc nhiều lớp

Từ nguyên tắc đã được trình bầy ở trên, người ta xây dựng các thuật toán FFT cơ số hai phân chia theo thời gian, thuật toán FFT cơ số bốn phân chia theo thời gian Mỗi thuật toán FFT cụ thể còn có những đặc điểm riêng khi đi sâu nghiên cứu chúng

Cũng theo nguyên tắc trên, nhưng thực hiện phân chia theo tần

số, người ta xây dựng các thuật toán FFT cơ số hai phân chia theo tần số, thuật toán FFT cơ số bốn phân chia theo tần số

Có thể tham khảo sâu hơn về các thuật toán FFT phân chia theo thời gian và FFT phân chia theo tần số ở các tài liệu tham khảo [6], [12]

4.5.2 Thực hiện thuật toán FFT phân chia theo thời gian

4.5.2 a Thực hiện thuật toán FFT cơ số hai phân chia theo thời gian

Để thấy được trực quan thuật toán FFT cơ số hai, xét ví dụ sau

Trang 3

Ví dụ 4.21 : Hãy tính DFT 16 điểm của dãy x(n)10 bằng thuật toán FFT cơ số hai phân chia theo thời gian.

Giải : Để tính DFT16 điểm, cần thêm 6 mẫu 0 vào cuối dãy x(n)10 :

x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8) x(9) 0 0 0 0 0 0

Với M = N/2 = 16/2 = 8 thì L = 2 , nghĩa là mảng x(m, l) có 8 cột và 2 hàng

- Bước một : Lưu giữ dãy x(n)16 bằng mảng x(m, l) xắp xếp theo cột :

0 0 0 9 7

5 3 1

0 0 0 8 6 4 2 0

) ( ) ( ) ( ) ( )

(

) ( ) ( ) ( ) ( )

(

x x

x x x

x x x x x

Khi chuyển sang chỉ số mảng hai chiều, nhận được mảng x(m, l) :

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

7 , 1 6

, 1 5

, 1 4

, 1 3

, 1 2

, 1 1

, 1 0

, 1

7 , 0 6

, 0 5

, 0 4

, 0 3

, 0 2

, 0 1

, 0 0

, 0

x x

x x

x x

x x

x x

x x

x x

x x

Mỗi hàng có ba phần tử ở cuối bằng 0, và hàng có chỉ số l = 0 là các mẫu chẵn x(2n)16, còn hàng có chỉ số l = 1 là

các mẫu lẻ x(2n+1)16

- Bước hai : Tính hai DFT8 điểm ứng với hai hàng và nhận được mảng F (l, q) :

 7 0

.

5 4 )

, ( )

,

m

m jq

e m x q

7 0

.

5 4 )

, ( )

,

m

m jq

e m x q

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

) ( ) ( ) ( ) ( ) ( ) , ( ) , ( ) , (

7 , 1 6

, 1 5

, 1 4

, 1 3

, 1 2

, 1 1

, 1 0

, 1

7 , 0 6

, 0 5

, 0 4

, 0 3

, 0 2

0 1

0 0

0

F F

F F

F F

F F

F F

F F

F F

F F

- Bước ba : Tính mảng G( l , q ) F( l , q ) ejq.2N.l :

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

) ( ) ( ) ( ) ( ) ( ) , ( ) , ( ) , (

7 , 1 6

, 1 5

, 1 4

, 1 3

, 1 2

, 1 1

, 1 0

, 1

7 , 0 6

, 0 5

, 0 4

, 0 3

, 0 2

0 1

0 0

0

G G

G G

G G

G G

G G

G G

G G

G G

- Bước bốn : Tính tám DFT2 điểm ứng với tám cột của mảng G (l, q) và nhận được mảng X (p, q) :

 1 0

.2 )

, ( )

, (

l

l jp

e q l q

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

) ( ) ( ) ( ) ( ) ( ) , ( ) , ( ) , (

7 , 1 6

, 1 5

, 1 4

, 1 3

, 1 2

, 1 1

, 1 0

, 1

7 , 0 6

, 0 5

, 0 4

, 0 3

, 0 2

0 1

0 0

0

X X

X X

X X

X X

X X

X X

X X

X X

- Bước năm : Chuyển mảng X (p, q) thành dãy X (k) N xắp xếp theo hàng :

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (

15 14

13 12

11 10

9 8

7 6

5 4

3 2

1 0

X X

X X

X X

X X

X X

X X

X X

X X

4.5.2b Thực hiện thuật toán FFT cơ số bốn phân chia theo thời gian

Để thấy được trực quan thuật toán FFT cơ số bốn, xét ví dụ sau

Ví dụ 4.22 : Hãy tính DFT 16 điểm của dãy x(n)10 bằng thuật toán FFT cơ số bốn phân chia theo thời gian

Giải : Để tính , cần thêm 6 mẫu 0vào cuối dãy x(n)10 :

x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8) x(9) 0 0 0 0 0 0

Với M = N/4 = 16/4 = 4 thì L = 4 , mảng x(m, l) có 4 cột và 4 hàng

- Bước một : Lưu giữ dãy x(n)16 bằng mảng x(m, l) xắp xếp theo cột :

0 0

7 3

0 0

6 2

0 9

5 1

0 8

4 0

) ( )

(

) ( )

(

) ( )

( )

(

) ( )

( )

(

x x

x x

x x

x

x x

x

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

3 , 3 2

, 3 1

, 3 0

, 3

3 , 2 2

, 2 1

, 2 0

, 2

3 , 1 2

, 1 1

, 1 0

, 1

3 , 0 2

, 0 1

, 0 0

, 0

x x

x x

x x

x x

x x

x x

x x

x x

Trong đó hai hàng đầu có một phần tử ở cuối bằng 0, hai hàng cuối có hai phần tử ở cuối bằng 0

- Bước hai : Tính bốn DFT4 điểm ứng với bốn hàng của mảng x(m, l) và nhận được mảng F (l, q) :

3

0

.2 )

, ( )

,

(

m

m jq

e m l x q

l

- Bước ba : Tính mảng G( l , q ) F( l , q ) ejq.2N.l :

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

3 , 3 2

, 3 1

, 3 0

, 3

3 , 2 2

, 2 1

, 2 0

, 2

3 , 1 2

, 1 1

, 1 0

, 1

3 , 0 2

, 0 1

, 0 0

, 0

F F

F F

F F

F F

F F

F F

F F

F F

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

) (

3 , 3 2

, 3 1

, 3 0

, 3

3 , 2 2

, 2 1

, 2 0

, 2

3 , 1 2

, 1 1

, 1 0

, 1

3 , 0 2

, 0 1

, 0 0

, 0

G G

G G

G G

G G

G G

G G

G G

G G

- Bước bốn : Tính bốn DFT 4 điểm ứng với bốn cột của mảng G (l, q) và nhận được mảng X (p, q) :

Trang 4

 3 0

.2 )

, ( )

, (

l

l jp

e q l q

- Bước năm : Chuyển mảng X (p, q) thành dãy X (k) N xắp xếp theo hàng :

Ngày đăng: 07/07/2013, 01:26

HÌNH ẢNH LIÊN QUAN

Hình 4.20 : Mảng  x(m, l)  xắp xếp theo cột :  n = l + m L . - xu ly so tin hieu SO LUONG DUY KHANH
Hình 4.20 Mảng x(m, l) xắp xếp theo cột : n = l + m L (Trang 1)
Hình 4.19 : Lưu giữ trong bộ nhớ dãy  x(n) N  . - xu ly so tin hieu SO LUONG DUY KHANH
Hình 4.19 Lưu giữ trong bộ nhớ dãy x(n) N (Trang 1)
Bảng  4.19  : Số phép nhân khi tính trực tiếp  DFT  và tính theo  FFT . - xu ly so tin hieu SO LUONG DUY KHANH
ng 4.19 : Số phép nhân khi tính trực tiếp DFT và tính theo FFT (Trang 2)
Bảng  4.19  cho thấy, khi độ dài  N  tính  DFT  càng tăng thì khối lượng tính  DFT  theo thuật toán  FFT  càng giảm - xu ly so tin hieu SO LUONG DUY KHANH
ng 4.19 cho thấy, khi độ dài N tính DFT càng tăng thì khối lượng tính DFT theo thuật toán FFT càng giảm (Trang 2)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w