430 likes | 1.03k Views
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว. ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์. เป้าหมาย. นศ รู้จักความหมายของ การแปลงฟูริเยร์แบบเร็ว (Fast Fourier Transform :FFT) และผลการแปลงจากสัญญาณในโดเมนเวลา
E N D
DSP 6 The Fast Fourier Transform (FFT)การแปลงฟูริเยร์แบบเร็ว ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ EEET0485 Digital Signal Processing
เป้าหมาย • นศ รู้จักความหมายของ การแปลงฟูริเยร์แบบเร็ว (Fast Fourier Transform :FFT) และผลการแปลงจากสัญญาณในโดเมนเวลา • นศ รู้จัก FFT แบบ Decimation in time (DIT) หรือ DIT-FFT EEET0485 Digital Signal Processing
DFT...ช้าเพราะมีการคูณเลขเชิงซ้อนDFT...ช้าเพราะมีการคูณเลขเชิงซ้อน จากเรื่องของ DFT โดย เลขเชิงซ้อน สังเกตว่า แต่ละค่าของ X(k) นั้น ต้องทำการคูณจำนวนเชิงซ้อน ถึง N ค่า คือ x(0) ถึง x(N-1) และ ถ้าต้องการ X(k), โดยที่ k=0 ถึง N-1 ก็ต้องคูณจำนวนเชิงซ้อน อีก N ครั้ง กลายเป็น NxN = N2 ซึ่งเป็นการกินกำลังงานของโปรเซสเซอร์อย่างมาก !!! EEET0485 Digital Signal Processing
จำนวนการคูณและบวกเลขจริงต่อ การคูณเลขเชิงซ้อนหนึ่งครั้ง จงหาจำนวนการคูณและบวก สำหรับการเลขเชิงซ้อนข้างล่าง ตัวอย่าง โดยที่ วิธีทำ มีการคูณ สี่ครั้ง มีการบวกสามครั้ง EEET0485 Digital Signal Processing
จำนวนการคูณเลขเชิงซ้อนสำหรับ DFT กรณี N=2 มีการคูณเลขเชิงซ้อน 4 ครั้ง EEET0485 Digital Signal Processing
จำนวนการคูณเลขเชิงซ้อนสำหรับ DFT(ต่อ) กรณี N=4 มีการคูณเลขเชิงซ้อน 16 ครั้ง EEET0485 Digital Signal Processing
วิธีลดจำนวนการคูณเลขเชิงซ้อนวิธีลดจำนวนการคูณเลขเชิงซ้อน ลองมาดูว่ากรณี N=2 เราได้ เราได้ นั่นคือ EEET0485 Digital Signal Processing
วิธีลดจำนวนการคูณเลขเชิงซ้อน (ต่อ) แต่เนื่องจาก ซึ่งเป็นเลขจำนวนจริง ดังนั้น หรือ โดยการคำนวณ WNไว้ก่อน จะทำให้ลดการคูณเลขลง ซึ่งอาจจะทำให้ไม่มีการคูณเลขเชิงซ้อนเลย!!! EEET0485 Digital Signal Processing
The Fast Fourier Transform (FFT)เร็ว...เพราะสลับลำดับข้อมูล Radix-2 DIT-FFT • FFT เป็นชื่อเรียกโดยรวมๆของ อัลกอริธึมใดๆ ที่มีการแปลง DFT อย่างเร็ว • วิธี“แบ่งแยกแล้วปกครอง (Divide and conquer)” ก็เป็นหนึ่งวิธีที่จะลดจำนวนการคูณเลขเชิงซ้อนลง • ใช้ การแบ่งทางเวลา (Decimation in time) กับ N สัญญาณโดเมนเวลา โดยที่ N เป็นเลขกำลังของ 2 หรือเรียกว่า Radix-2 ดังนั้นชื่อเต็มเรียกว่า Radix-2 DIT-FFT EEET0485 Digital Signal Processing
บัตเตอร์ฟลาย Butterfly เป็นชื่อเรียก ของ กราฟการไหลของสัญญาณ (signal flow graph) โดยหนึ่ง บัตเตอร์ฟลายมีการคูณเลขเชิงซ้อน สอง ครั้ง 1 1 Note: จริงๆแล้วแม้ว่า =1 ส่วน =-1, แต่ตอนนี้เราจะนับไปก่อนว่าเป็นเลขเชิงซ้อน EEET0485 Digital Signal Processing
กรณี N=4 DIT-FFT กรณี N =4 โดยที่ เราใช้การ”สลับ”ตำแหน่งของข้อมูลแล้ว ”รวม” (recomposite) EEET0485 Digital Signal Processing
การสลับตำแหน่งและการรวม (recomposite) ซึ่งเป็นการแยกออกเป็น DFT แบบ 2 จุดสองชุด ดังนั้น DFT แบบ 4 จุด = DFT แบบ 2 จุด + Wk4 x DFT แบบ 2 จุด EEET0485 Digital Signal Processing
เรา “ลดรูป” สมการลงได้อีก เราจะสร้าง “บัตเตอร์ฟลาย” เพื่อแสดงการสร้างสัญญาณ X(k) สำหรับ แต่ละค่าของ k EEET0485 Digital Signal Processing
หา หมายเหตุ: ลูกศรที่ไม่เขียนค่ากำกับไว้ จะเท่ากับการคูณด้วย “1” EEET0485 Digital Signal Processing
หา EEET0485 Digital Signal Processing
หา EEET0485 Digital Signal Processing
หา EEET0485 Digital Signal Processing
ผลลัพท์ท้ายสุดคือ 4-point DIT-FFT 1 1 EEET0485 Digital Signal Processing
8-point DIT-FFT จัดรูปแบบใหม่ EEET0485 Digital Signal Processing
8-point DIT-FFT(ต่อ) จาก สังเกตว่า เหลือเพียงการคำนวณสำหรับ 4-point DFTเท่านั้น EEET0485 Digital Signal Processing
ลดรูปลงได้อีกไหม? ได้...เพราะเราใช้ประโยชน์จากความเป็นคาบของสัญญาณ EEET0485 Digital Signal Processing
8-point บัตเตอร์ฟลาย 4-point DFT 4-point DFT EEET0485 Digital Signal Processing 4 บัตเตอร์ฟลาย
แต่เรายังลดรูปได้อีก จาก สมการ 8-point DFT ที่ถูกลดลงเหลือ 4-point DFTx2 2-point DFT 2-point DFT ซึ่งก็คือ การแบ่ง 4-point DFT ออกเป็น 2-point DFTx2 EEET0485 Digital Signal Processing
4-point DFT แยก 4-point DFT ออกเป็น 2-point DFT สำหรับ x(0),x(2),x(4) และ x(6) 1 1 EEET0485 Digital Signal Processing
สำหรับ x(1),x(3),x(5) และ x(7) 2-point DFT 2-point DFT ซึ่งก็คือ การแบ่ง 4-point DFT ออกเป็น 2-point DFTx2 EEET0485 Digital Signal Processing
แยก 4-point DFT ออกเป็น 2-point DFT สำหรับ x(1),x(3),x(5) และ x(7) 1 1 4-point DFT EEET0485 Digital Signal Processing
DIT-FFT สำหรับ N=8 EEET0485 Digital Signal Processing
สรุป 8-point DFT แตกตัวออกได้จนเหลือ 2-point DFT 8-point DFT 4-point DFT + Wk8 x 4-point DFT 2-point DFT + W4k x 2-point DFT 2-point DFT + W4k x 2-point DFT EEET0485 Digital Signal Processing
กรณี 8-pointDIT-FFT ตัวรวม 4-point DFT ตัวรวม 8-point DFT (Recomposition to 8-point DFT) ตัวรวม 4-point DFT EEET0485 Digital Signal Processing
กรณี N-pointDIT-FFT Recomposition 2-point DFT 2-point DFT 2-point DFT 2-point DFT 2-point DFT EEET0485 Digital Signal Processing
ทำไม FFT ใช้การคำนวณเพียง N log2N? เมื่อเราให้ R เป็น จำนวนขั้น (stage) ที่มีการรวม เราจะได้ว่า จึงได้ สำหรับ 4–point DFT, R=1 สำหรับ 8–point DFT, R=2 EEET0485 Digital Signal Processing
จำนวนขั้นการรวม (R) 4-point DFT 8-point DFT 2 2 4 4 2 2 8 จำนวนครั้ง การรวม (R)= 2 1 4 2 จำนวนครั้ง การรวม (R)= 1 2 EEET0485 Digital Signal Processing
จำนวนบัตเตอร์ฟลายต่อคอลัมน์ (B) 4-point DFT 8-point DFT 2 2 4 4 2 2 8 2 จำนวนบัตเตอร์ ฟลาย (B)= 4 2 2 2 จำนวน บัตเตอร์ฟลาย (B)= 2 จำนวนคอลัมน์ 4 4 4 3 จำนวนคอลัมน์ EEET0485 Digital Signal Processing
จำนวนการคูณเลขเชิงซ้อน = จ.น.บัตเตอร์ฟลายต่อคอลัมน์X จ.น.คอลัมน์ X มีการคูณ 2 ครั้งต่อบัตเตอร์ฟลาย EEET0485 Digital Signal Processing
เปรียบเทียบจำนวนครั้งการคูณเลขเชิงซ้อนของ DFT และ FFT เราลดการคำนวณ จาก เหลือ EEET0485 Digital Signal Processing
ปรับปรุงบัตเตอร์ฟลาย จาก r= เลขใดๆ เราทราบว่า ดังนั้น 1 -1 ทำให้เหลือ จ.น.การคูณเลขเชิงซ้อนเป็น (N/2)log2N EEET0485 Digital Signal Processing
บัตเตอร์ฟลาย 4-point DFT ที่ถูกลดรูป 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 เหลือจ.น. การคูณเลขเชิงซ้อนเพียง (N/2)log2N= 4 EEET0485 Digital Signal Processing
สรุป • FFT ก็คือ DFT แต่เป็นการสลับตำแหน่งข้อมูลและเทคนิกการรวมสัญญาณ เพื่อย่อยให้จำนวนการแปลงลดรูปลง วิธีการนี้ เรียกว่า Decimation in Time (DIT) และเรียก การแปลงฟูริเยร์แบบเร็วนี้ว่า DIT-FFT • การแปลงฟูริเยร์แบบเร็ว (FFT) แบบจะทำให้เหลือการคูณเลขเชิงซ้อนเหลือเพียง Nlog2N ครั้ง จาก N2ครั้ง เมื่อใช้ DFT • หรืออาจจะลดการคูณเลขเชิงซ้อนลงได้อีกเป็น (N/2) log2N หากใช้การปรับปรุงบัตเตอร์ฟลาย EEET0485 Digital Signal Processing