DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
เป้าหมาย นศ รู้จักความหมายของ การแปลงฟูริเยร์แบบเร็ว (Fast Fourier Transform :FFT) และผลการแปลงจากสัญญาณในโดเมนเวลา นศ รู้จัก FFT แบบ Decimation in time (DIT) หรือ DIT-FFT CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
DFT คำนวณช้า... เพราะการคูณของเลขเชิงซ้อน สังเกตว่า แต่ละค่าของ X(k) นั้น ต้องทำการคูณจำนวนเชิงซ้อน ถึง N ค่า คือ x(0) ถึง x(N-1) และ ถ้าต้องการ X(k), โดยที่ k=0 ถึง N-1 ก็ต้องคูณจำนวนเชิงซ้อน อีก N ครั้ง กลายเป็น NxN ซึ่งเป็นการกินกำลังงานของโปรเซสเซอร์อย่างมาก !!! โดย เลขเชิงซ้อน CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
จำนวนการคูณและบวกเลขจริงต่อ การคูณเลขเชิงซ้อนหนึ่งครั้ง จำนวนการคูณและบวกเลขจริงต่อ การคูณเลขเชิงซ้อนหนึ่งครั้ง ตัวอย่าง จงหาจำนวนการคูณและบวก สำหรับการเลขเชิงซ้อนข้างล่าง โดยที่ วิธีทำ มีการคูณ สี่ครั้ง มีการบวกสามครั้ง CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
จำนวนการคูณเลขเชิงซ้อนสำหรับ 2-point DFT มีการคูณเลขเชิงซ้อน 4 ครั้ง CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
จำนวนการคูณเลขเชิงซ้อนสำหรับ 4-point DFT มีการคูณเลขเชิงซ้อน 16 ครั้ง CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
วิธีลดจำนวนการคูณเลขเชิงซ้อน ลองมาดูว่ากรณี N=2 เราได้ เราได้ นั่นคือ CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
วิธีลดจำนวนการคูณเลขเชิงซ้อน (ต่อ) แต่เนื่องจาก ซึ่งเป็นเลขจำนวนจริง ดังนั้น หรือ โดยการคำนวณ WN ไว้ก่อน จะทำให้ลดการคูณเลขลง ซึ่งอาจจะทำให้ไม่มีการคูณเลขเชิงซ้อนเลย!!! CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
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 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
บัตเตอร์ฟลาย Butterfly เป็นชื่อเรียก ของ กราฟการไหลของสัญญาณ (signal flow graph) โดยหนึ่ง บัตเตอร์ฟลาย มีการคูณเลขเชิงซ้อน สอง ครั้ง 1 1 Note: จริงๆแล้วแม้ว่า =1 ส่วน = -1, แต่ตอนนี้เราจะนับไปก่อนว่าเป็นเลขเชิงซ้อน CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
กรณี N=4 DIT-FFT กรณี N =4 โดยที่ เราใช้การ”สลับ”ตำแหน่งของข้อมูลแล้ว ”รวม” (recomposite) CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
การสลับตำแหน่งและการรวม (Recomposite) ซึ่งเป็นการแยกออกเป็น DFT แบบ 2 จุดสองชุด ดังนั้น DFT แบบ 4 จุด = DFT แบบ 2 จุด + Wk4 x DFT แบบ 2 จุด CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
เรา “ลดรูป” สมการลงได้อีกในขั้น Recomposite เราจะสร้าง “บัตเตอร์ฟลาย” เพื่อแสดงการสร้างสัญญาณ X(k) สำหรับ แต่ละค่าของ k CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
หา หมายเหตุ: ลูกศรที่ไม่เขียนค่ากำกับไว้ จะเท่ากับการคูณด้วย “1” การรวม Recomposite หมายเหตุ: ลูกศรที่ไม่เขียนค่ากำกับไว้ จะเท่ากับการคูณด้วย “1” CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
หา การรวม Recomposite CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
หา การรวม Recomposite CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
หา การรวม Recomposite CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
ผลลัพท์ท้ายสุดคือ 4-point DIT-FFT 1 1 2-point DFT x 2 การรวม Recomposite CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
8-point DIT-FFT จัดรูปแบบใหม่ CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
8-point DIT-FFT (ต่อ) จาก สังเกตว่า เหลือเพียงการคำนวณสำหรับ 4-point DFT เท่านั้น CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
ลดรูปลงได้อีกไหม? ได้ใช้ประโยชน์จากความเป็นคาบของสัญญาณ CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
8-point บัตเตอร์ฟลาย การรวม Recomposite 4-point DFT 4-point DFT CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
แต่เรายังลดรูปได้อีก จาก สมการ 8-point DFT ที่ถูกลดลงเหลือ 4-point DFTx2 2-point DFT 2-point DFT ซึ่งก็คือ การแบ่ง 4-point DFT ออกเป็น 2-point DFTx2 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
แยก 4-point DFT ออกเป็น 2-point DFT สำหรับ x(0),x(2),x(4) และ x(6) 1 1 4-point DFT CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
สำหรับ x(1),x(3),x(5) และ x(7) 2-point DFT 2-point DFT ซึ่งก็คือ การแบ่ง 4-point DFT ออกเป็น 2-point DFTx2 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
แยก 4-point DFT ออกเป็น 2-point DFT สำหรับ x(1),x(3),x(5) และ x(7) CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
DIT-FFT สำหรับ N=8 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
สรุป 8-point DFT แตกตัวออกได้จนเหลือ 2-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 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
กรณี 8-point DIT-FFT ตัวรวม 8-point DFT ตัวรวม 4-point DFT ตัวรวม (Recomposition to 8-point DFT) ตัวรวม 4-point DFT CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
กรณี N-point DIT-FFT 2-point DFT 2-point DFT 2-point DFT 2-point DFT CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
ทำไม FFT ใช้การคำนวณเพียง N log2N ? เมื่อเราให้ R เป็น จำนวนขั้น (stage) ที่มีการรวม เราจะได้ว่า จึงได้ สำหรับ 4–point DFT, R=1 สำหรับ 8–point DFT, R=2 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
จำนวนขั้นการรวม (R) 1 1 2 4-point DFT 8-point DFT 2 2 4 4 2 2 8 จำนวนครั้ง การรวม (R)= 2 1 4 2 จำนวนครั้ง การรวม (R)= 1 2 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
จำนวนบัตเตอร์ฟลายต่อคอลัมน์ (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 จำนวนคอลัมน์ CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
จำนวนการคูณเลขเชิงซ้อน = จ.น.บัตเตอร์ฟลายต่อคอลัมน์X จ.น.คอลัมน์ X มีการคูณ 2 ครั้งต่อบัตเตอร์ฟลาย CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
เปรียบเทียบจำนวนครั้งการคูณเลขเชิงซ้อน ของ DFT และ FFT เราลดการคำนวณ จาก เหลือ N DFT N2 FFT (N log2N) 2 4 8 : 256 512 1,024 16 64 65,536 262,144 1,048,576 24 2,048 4,608 10,240 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
ปรับปรุงบัตเตอร์ฟลาย จาก r= เลขใดๆ เราทราบว่า ดังนั้น 1 -1 ทำให้เหลือ จ.น.การคูณเลขเชิงซ้อนเป็น (N/2)log2N CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
บัตเตอร์ฟลาย 4-point DFT ที่ถูกลดรูป 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 เหลือจ.น. การคูณเลขเชิงซ้อนเพียง (N/2)log2N= 4 CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon
สรุป FFT ก็คือ DFT แต่เป็นการสลับตำแหน่งข้อมูลและเทคนิกการรวมสัญญาณ เพื่อย่อยให้จำนวนการแปลงลดรูปลง วิธีการนี้ เรียกว่า Decimation in Time (DIT) และเรียก การแปลงฟูริเยร์แบบเร็วนี้ว่า DIT-FFT การแปลงฟูริเยร์แบบเร็ว (FFT) แบบจะทำให้เหลือการคูณเลขเชิงซ้อนเหลือเพียง Nlog2N ครั้ง จาก N2 ครั้ง เมื่อใช้ DFT หรืออาจจะลดการคูณเลขเชิงซ้อนลงได้อีกเป็น (N/2) log2N หากใช้การปรับปรุงบัตเตอร์ฟลาย CESdSP EEET0485 Digital Signal Processing http://embedsigproc.wordpress.com Asst. Prof. Dr. P.Yuvapoositanon