Bài giảng Xử lý số tín hiệu - Chương 8: Biến đổi DFT và FFT
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Xử lý số tín hiệu - Chương 8: Biến đổi DFT và FFT", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_xu_ly_so_tin_hieu_chuong_8_bien_doi_dft_va_fft.pdf
Nội dung text: Bài giảng Xử lý số tín hiệu - Chương 8: Biến đổi DFT và FFT
- Xử lý số tín hiệu Chương 8: Biến đổi DFT và FFT
- 1. Lấy mẫu tần số: Biến đổi Fourier rời rạc (DFT) Công thức DTFT cho chuỗi thời gian rời rạc x(n): jn X () x(n)e Discrete Time Fourier Transform n Nhận xét: X(ω) là hàm liên tục -> không thể thực hiện trên phần cứng các phép biến đổi tín hiệu trong miền tần số. Cần rời rạc phổ của tín hiệu trong miền tần số hay lấy mẫu tần số. Lấy mẫu bao nhiêu là “đủ” để có thể khôi phục lại được tín hiệu x(n) hay X(ω) ban đầu?
- 1. Lấy mẫu tần số: Biến đổi Fourier rời rạc (DFT) (tt) Do phổ X(ω) lặp lại với chu kỳ 2 , ta chỉ cần lấy mẫu X(ω) trong khoảng [0,2 ]. Giả sử trong khoảng tần số này ta lấy N mẫu cách đều nhau ω=2 /N thì các mẫu này được cho bởi: 2 2 j kn X k x(n)e N , k 0,1, , N 1 N n Đổi biến n=m-lN với m=0,1, ,N-1, l=- ∞, ,∞ 2 2 N 1 j km X k x(m lN ) e N , k 0,1, , N 1 N m 0 l x p (m)
- 1. Lấy mẫu tần số: Biến đổi Fourier rời rạc (DFT) (tt) x (n) x(n lN ) p l có thể tính được từ x(n) bằng cách lặp lại x(n) sau mỗi N mẫu. Giả sử x(n) dài L mẫu, ta có 2 trường hợp:
- 1. Lấy mẫu tần số: Biến đổi Fourier rời rạc (DFT) (tt) Nhận xét: Nếu N≥L: ta có thể khôi phục hoàn toàn x(n) từ xp(n) bằng cách chọn x(n) xp (n), 0 n N 1 Nếu N<L: ta không thể khôi phục x(n) từ xp(n).
- 1. Lấy mẫu tần số: Biến đổi Fourier rời rạc (DFT) (tt) Cách khôi phục lại x(n) từ X(k): do xp(n) tuần hoàn nên có thể được biểu diễn bằng khai triển chuỗi Fourier: N 1 x (n) c e j2 kn / N , 0 n N 1 p k 0 k Trong đó: 1 N 1 c x (n)e j2 kn / N , 0 k N 1 k N k 0 p So sánh ck với X(2 k/N): 2 N 1 j kn 2 N X k xp (n)e , 0 k N 1 N n 0 Suy ra: 1 2 ck X k , 0 k N 1 N N
- 1. Lấy mẫu tần số: Biến đổi Fourier rời rạc (DFT) (tt) Thế vào công thức của khai triển chuỗi Fourier ta suy ra cách khôi phục x(n) từ X(ω): 1 N 1 2 x(n) X k e j2 kn / N , 0 n N 1 k 0 N N Kết luận: Phổ của tín hiệu rời rạc bất kỳ có chiều dài L có thể được khôi phục chính xác từ các mẫu của nó ở các tần số ωk=2 k/N nếu N ≥L.
- 2. Biến đổi DFT Do X(k) được lấy từ X(ω) bằng cách lấy mẫu ở N tần số cách đều nhau nên biến đổi giữa X(k) và x(n) được gọi là biến đổi Fourier rời rạc (DFT). Công thức DFT N điểm của x(n): N 1 X (k) x(n)e j2 kn / N , k 0,1, , N 1 n 0 IDFT 1 N 1 x(n) X k e j2 kn / N , n 0,1, , N 1 N k 0 Tính chất của biến đổi DFT: (đọc thêm)
- 2. Biến đổi DFT (tt) Ảnh hưởng của chiều dài N(số điểm DFT): Giả sử x(n) có chiều dài L, ta thực hiện DFT N điểm cho tín hiệu này (N≥L). Do x(n) chỉ có L điểm, ta cần thêm vào N-L zero. ⇒ Phổ X(k) thay đổi như thế nào khi tăng N? Ví dụ: Tìm biến đổi DFT N điểm của x(n) cho bởi: 1 0 n L 1 x(n) 0 n khác
- 2. Biến đổi DFT (tt) Giải: Biến đổi Fourier của tín hiệu x(n): L 1 sin(L / 2) X () e jn e j(L 1)/ 2 n 1 sin( / 2)
- 2. Biến đổi DFT (tt) Biến đổi DFT N điểm cho x(n) L 1 sin( kL/ N) X (k) e j2 kn / N e j k(L 1)/ N n 1 sin( k / N) Nếu N=L, X(k) trở thành: L k 0 X (k) 0 k 1,2, , L 1
- 2. Biến đổi DFT (tt) Tăng N: N=50. N=100. ⇒ Tăng N sẽ giúp ta có được biểu diễn tốt hơn của X(ω).
- 2. Biến đổi DFT (tt) Phân tích phổ tần số của tín hiệu sử dụng biến đổi DFT – Độ phân giải tần số. Giả sử ta có một tín hiệu rời rạc x(n) là kết quả của quá trình lấy mẫu x(t) ở tần số lấy mẫu fs. Giả sử x(n) và fs thoả định lý lấy mẫu ⇒ tần số cao nhất của x(n) là fs/2. Chọn L mẫu trong x(n) (0≤n≤L-1) để phân tích DFT. ⇒ Việc giới hạn chiều dài x(n) tương đương với nhân x(n) với cửa sổ chữ nhật chiều dài L: x (n) x(n)w(n) 1 0 n L 1 Với w(n) 0 n khác
- 2. Biến đổi DFT (tt) Giả sử x(n)=cos(ω0n), phổ của x’(n) là 1 X () W( 0 ) W( 0 ) 2 sin(L / 2) Với W() e j(L 1)/ 2 sin( / 2) Nhận xét: Theo lý thuyết, phổ X(ω) là 2 xung diract ở ±ω0. Phổ của X’(ω) tập trung ở ±ω0 nhưng rải trong 1 khoảng tần số chứ ko tập trung tại 1 tần số như X(ω). Độ phân giải tần số hay khoảng cách tối thiểu của 2 tần số nằm gần nhau có thể phân biệt đc trên phổ DFT chính bằng ½ độ rộng của cửa sổ chữ nhật 2 /L hay fs/L.
- 2. Biến đổi DFT (tt) VD: Tín hiệu gồm 2 thành phần tần số được phân tích DFT với cửa sổ có chiều dài 64. ⇒ Độ phân giải tần số: /32 Khi khoảng cách giữa 2 tần số thu hẹp nhỏ hơn độ phân giải tần số của cửa sổ chữ nhật thì trên phổ DFT không phân biệt được 2 tần số này.
- 3. Biến đổi FFT Nhu cầu: cần một giải thuật thực hiện DFT hiệu quả về mặt tính toán và đơn giản, dễ ứng dụng trên phần cứng số. -j2 /N Công thức DFT: đặt WN=e . N 1 X (k) x(n)W kn , k 0,1, , N 1 n 0 N Để tính N điểm X(k), ta cần thực hiện: N2 phép nhân phức. N(N-1) phép cộng phức. ⇒ Chi phí tính toán lớn!
- 3. Biến đổi FFT (tt) Giải thuật FFT Radix-2: Giả sử N=2v, DFT N điểm của x(n) có thể được tính theo phương pháp chia nhỏ khối tính DFT thành nhiều khâu như sau: N 1 X (k) x(n)W kn x(n)W kn x(n)W kn n 0 N N N n even n odd N / 2 1 N / 2 1 x(2m)W k 2m x(2m 1)W k(2m 1) m 0 N m 0 N N / 2 1 N / 2 1 x(2m)W km W k x(2m 1)W km m 0N/ 2 N m 0N/ 2 F1 (k) F2 (k) F1(k), F2(k) là DFT N/2 điểm của chuỗi x(2m) và x(2m+1)
- 3. Biến đổi FFT (tt) So sánh chi phí tính toán: DFT N điểm: N2 phép nhân phức. 2 DFT N/2 điểm: N2/2+N/2 phép nhân phức. Khi N lớn: độ lợi tính toán: N 2 N 2 2 1 lim N 2 N 2 ⇒ Khi chia nhỏ khối DFT N điểm thành 2 khối DFT N/2 điểm, ta giảm được ½ chi phí tính toán! ⇒ Càng chia nhỏ càng tiết kiệm được chi phí tính toán!
- 3. Biến đổi FFT (tt) Cách thực hiện FFT: giả sử ta cần tính DFT 8 điểm: x(0) X(0) x(2) X(1) x(4) X(2) x(6) 8-point X(3) x(1) DFT X(4) x(3) X(5) x(5) X(6) x(7) X(7)
- 3. Biến đổi FFT (tt) Chia khối DFT 8 điểm thành 2 khối DFT 4 điểm: F1(0) x(0) X(0) 0 W8 F1(1) x(2) 4-point X(1) 1 W8 F1(2) x(4) X(2) DFT 2 W8 F1(3) x(6) X(3) W 3 F (0) 8 x(1) 2 X(4) 4 W8 F (1) x(3) 2 X(5) 5 4-point W8 F (2) x(5) 2 X(6) 6 DFT W8 F (3) x(7) 2 X(7) 7 W8
- 3. Biến đổi FFT (tt) Chia khối DFT 4 điểm thành 2 khối DFT 2 điểm: x(0) X(0) 2-point W 0 W 0 DFT 8 8 x(4) X(1) 2 1 W8 W8 x(2) X(2) 2-point 4 W8 W 2 DFT 8 x(6) X(3) 6 3 W8 W8 x(1) X(4) 2-point 4 W 0 W8 DFT 8 x(5) X(5) 5 2 W8 W8 x(3) X(6) 2-point 4 6 W8 W8 DFT x(7) X(7) 6 7 W8 W8
- 3. Biến đổi FFT (tt) Tính các khối DFT 2 điểm x(0) X(0) 0 W8 0 0 W8 W8 x(4) 4 X(1) W8 2 1 W8 W8 x(2) X(2) 0 4 2 W8 W8 W8 x(6) 4 X(3) W8 6 3 W8 W8 x(1) X(4) 0 0 4 W8 W8 W8 x(5) X(5) W 4 2 5 8 W8 W8 x(3) X(6) 0 4 6 W8 W8 W8 x(7) X(7) W 4 6 7 8 W8 W8
- 3. Biến đổi FFT (tt) r+N/2 r N/2 r Do WN =WN WN =-WN , ta rút gọn được: x(0) X(0) 0 W8 x(4) X(1) -1 0 W8 x(2) X(2) -1 0 2 W8 W8 x(6) X(3) -1 -1 0 W8 x(1) X(4) 0 1 -1 W8 W8 x(5) X(5) -1 0 2 -1 W8 W8 x(3) X(6) -1 0 2 3 -1 W8 W8 W8 x(7) X(7) -1 -1 -1
- 3. Biến đổi FFT (tt) Nhận xét: Ở mỗi tầng, phép tính toán cơ bản được cho bởi sơ đồ bướm: a r A=a+WN b r WN r b B=a-WN b -1 Mỗi sơ đồ bướm gồm 1 phép nhân phức và 2 phép v cộng phức. Với N=2 , ta có log2N=v tầng, mỗi tầng có N/2 sơ đồ bướm. Như vậy chi phí tính toán là: 2 (N/2)log2N phép nhân phức. (Tính trực tiếp cần N ) Nlog2N phép cộng phức. (Tính trực tiếp cần N(N-1))
- 3. Biến đổi FFT (tt)
- 3. Biến đổi FFT (tt) Nhận xét (tt): Khi đã thực hiện xong việc tính toán cho 1 tầng thì ta không cần lưu kết quả của tầng trước nữa. Do đó, tổng cộng ta chỉ cần 2N thanh ghi để lưu giá trị phức của ngõ vào, kết quả cũng như toàn bộ quá trình tính toán -> có thể thực hiện tính toán tại chỗ. Giải thuật dựa vào sự chia nhỏ chuỗi thời gian rời rạc x(n) được gọi là giải thuật chia nhỏ trên miền thời gian (decimation-in-time). Cho phép ghép nối nhiều khối FFT N điểm để tính FFT nhiều điểm hơn.
- 3. Biến đổi FFT (tt) VD: Tính DFT 4 điểm x(n)=[1,2,3,4] 4 10 x0 1 X 0 x 3 -2 -2+2j X 2 1 1 x 2 6 -2 1 0 1 X 2 w4 1 -2-2j x 4 -2 X 3 1 1 1 3 wj4 27
- 3. Biến đổi FFT (tt) Giải thuật chia nhỏ trên miền tần số (Decimation-in- frequency) N / 2 1 N 1 X (k) x(n)W kn x(n)W kn n 0 N n N / 2 N N / 2 1 N / 2 1 x(n)W kn W kN / 2 x(n N / 2)W kn n 0 N N n 0 N N / 2 1 x(n) ( 1)k x(n N / 2)W kn n 0 N Chia X(k)thành các mẫu chẵn và lẻ thì: N / 2 1 X (2k) x(n) x(n N / 2)W kn , k 0,1, , N/2-1 n 0 N / 2 g(n) N / 2 1 X (2k 1) x(n) x(n N / 2)W n W kn , k 0,1, , N/2 -1 n 0 N N / 2 h(n)
- 3. Biến đổi FFT (tt) Sơ đồ thực hiện:
- 3. Biến đổi FFT (tt) Chia đôi
- 3. Biến đổi FFT (tt) Chia đôi lần nữa!
- 3. Biến đổi FFT (tt) VD: Tính DFT 4 điểm x(n)=[1,2,3,4] 4 10 x0 1 X 0 6 x 2 2 X 1 1 2 2 22j x2 3 0 X1 1 w4 2 j 22j x 4 X 3 1 1 3 1 w4
- 4. Biến đổi IFFT Tính IFFT bằng giải thuật FFT N 1 kn X()() k x n wN n 0 NN 11 11 kn kn x()()()() n X k wNN x n X k w NNkk 00 * X(k) X* X (k) DFT X* 1/N x(n)
- 4. Biến đổi IFFT VD: Tính IDFT 4 điểm X(k)=[10,-2+2j,-2,-2-2j] * n n n n X (k)=[10,-2-2j,-2,-2+2j] w42 ()() j w 1 8 4 1/4 10 1 x(0) -4 1/4 -2-2j 12 3 x(2) 1 12 8 1/4 -2 0 2 x(1) 1 w4 -4 16 1/4 -2+2j 4 x(3) 1 1 1 w4