SP_Lecture9 - ‫מבוא לעיבוד אותות ־...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ‫מבוא לעיבוד אותות ־ הרצאה 9‬ ‫1102.9.2‬ ‫קרדיט: רוב השרטוטים שמופיעים כאן, על אף שהם דומים מאוד לשרטוטים שאילן עשה בכיתה,‬ ‫לקוחים מהאתר /‪ .http://cnx.org/content/m12016/latest‬ניתן למצוא שם גם הסברים די טובים‬ ‫לכל החומר של הרצאה זו.‬ ‫התמרת פורייה מהירה ע"י דילול בזמן‬ ‫חישוב התמרת פורייה דיסקרטית של סדרה בת ‪ N‬נקודות דורש 2 ‪ N‬פעולות כפל קומפלקסי‬ ‫ומספר דומה של פעולות חיבור, אם נעשה באופן ישיר. באופן זה, עבור ערכי ‪ N‬גדולים חישוב‬ ‫ההתמרה הופך ללא מעשי.‬ ‫בשנת 5691 המציאו ‪ Cooley&Tukey‬אלגוריתם לחישוב מהיר של התמרת פורייה דיסקרטית כאשר‬ ‫‪ N‬הוא חזקה של 2. על בסיס זה, התפתחה במשך השנים משפחה שלמה של אלגוריתמים‬ ‫מהירים הידועים באופן קולקטיבי כ"התמרת פורייה מהירה" ־ ‪.Fast Fourier Transform‬‬ ‫מספר פעולות הכפל הקומפלקסי הנדרשות לחישוב התמרה בת ‪ N‬נקודות בעזרת ‪ ,FFT‬כאשר‬ ‫1‬ ‫‪ N‬חזקה של 2, הוא ‪2 N log2 N‬‬ ‫בתת הפרק הבא נציג סוג נוסף של ‪ FFT‬הידוע כ־ "דילול בזמן" )‪(Decimation in Time‬‬ ‫יהי ‪ .r ∈ N ,N = 2r‬נרשום את ההתמרה ]‪ X [k‬בצורה הבאה:‬ ‫1− ‪N‬‬ ‫−‬ ‫= ‪x [n] WN kn‬‬ ‫‪odd n‬‬ ‫−‬ ‫+ ‪x [n] WN kn‬‬ ‫‪even n‬‬ ‫1−‬ ‫−‬ ‫= ‪x [n] WN kn‬‬ ‫0=‪n‬‬ ‫‪N‬‬ ‫2‬ ‫−‬ ‫= ‪x [2m + 1] WN (2m+1)k‬‬ ‫1−‬ ‫=‬ ‫‪−mk‬‬ ‫‪N‬‬ ‫2‬ ‫=‬ ‫0=‪m‬‬ ‫1−‬ ‫‪−k‬‬ ‫2‬ ‫‪x [2m + 1] WN‬‬ ‫‪N‬‬ ‫2‬ ‫−‬ ‫+ ‪x [2m] WN 2mk‬‬ ‫0=‪m‬‬ ‫1−‬ ‫=‬ ‫‪+ WN‬‬ ‫] ‪X [k‬‬ ‫‪2 −mk‬‬ ‫‪N‬‬ ‫2‬ ‫‪x [2m] WN‬‬ ‫0=‪m‬‬ ‫=‬ ‫0=‪m‬‬ ‫1 ‪twiddle factor‬‬ ‫‪N‬‬ ‫↓‬ ‫−2‬ ‫−‬ ‫−‬ ‫] ‪x [2m + 1] WN/mk = G [k ] + WN k H [k‬‬ ‫2‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫−‬ ‫−‬ ‫‪x [2m] WN/mk +WN k‬‬ ‫2‬ ‫0=‪m‬‬ ‫=‬ ‫0=‪m‬‬ ‫]‪G[k‬‬ ‫]‪H [k‬‬ ‫נשים לב: ]‪ G [k‬היא ה־ ‪ DFT‬של סדרה בעלת ‪ 1 N‬הנקודות הזוגיות של הסדרה המקורית, ו־‬ ‫2‬ ‫]‪ H [k‬היא ה־ ‪ DFT‬של הסדרה בעלת ‪ 1 N‬הנקודות האי־זוגיות של הסדרה המקורית. כמו כן,‬ ‫2‬ ‫‪N‬‬ ‫‪+k‬‬ ‫2‬ ‫‪N‬‬ ‫‪H‬‬ ‫‪+k‬‬ ‫2‬ ‫‪G‬‬ ‫] ‪= G [k‬‬ ‫] ‪= H [k‬‬ ‫1‬ ‫לכן ניתן לרשום לכל 1 −‬ ‫‪N‬‬ ‫2‬ ‫≤ ‪ 0 ≤ k‬את הקשרים הבאים:‬ ‫−‬ ‫] ‪G [k ] + WN k H [k‬‬ ‫] ‪H [k‬‬ ‫=‬ ‫] ‪X [k‬‬ ‫‪G [k ] + WN‬‬ ‫=‬ ‫‪N‬‬ ‫2‬ ‫) ‪−(k+ N‬‬ ‫2‬ ‫)∗(‬ ‫+‪X k‬‬ ‫ניתן לייצג פעולות אלו בעזרת דיאגרמת "פרפר" )מויקיפדיה(:‬ ‫בשרטוט של אילן היה: ]‪ y0 = X [k] ,x1 = H [k] ,x0 = G [k‬ו־ ‪.y1 = X k + N‬‬ ‫2‬ ‫שרטוט נוסף:‬ ‫איור 1: ‪Radix-2 DIT buttery simplication: both operations produce the same outputs‬‬ ‫ה"פרפר" מתאר את הקשרים בין אותות אלו, הרשומים מפורשות לעיל )*(.‬ ‫סיכום ביניים‬ ‫ניתן לומר כי ההתמרה ]‪ X [k‬בת ‪ N‬הנקודות ניתנת לחישוב ע"י שתי התמרות בנות‬ ‫]‪ G [k‬ו־ ]‪ ,H [k‬ובנוסף עוד ‪ N‬פעולות "פרפר" המתוארות ב־ )*( ובדיאגרמה.‬ ‫2‬ ‫דוגמה‬ ‫עבור 8 = ‪:N‬‬ ‫2‬ ‫‪N‬‬ ‫2‬ ‫נקודות,‬ ‫איור 2: .‪Decimation in time of a length-N DFT into two length- N DFTs followed by a combining stage‬‬ ‫2‬ ‫זהו פירוק יחיד של הסדרה המקורית לשתי סדרות באורך ‪ , N‬ולאחר מכן קומבינציה מחדש של‬ ‫2‬ ‫הסדרות המותמרות לקבלת ]‪.X [k‬‬ ‫מכיוון שהתחלנו מ־ ‪ N‬שהוא חזקה של 2, ניתן להמשיך בתהליך ולחשב בדרך זו גם את ] ‪G [k‬‬ ‫ו־ ]‪) H [k‬שאורכם זוגי(. כל אחת משתי ההתמרות הללו ניתנות לחישוב בעזרת התמרות בנות‬ ‫‪ N‬נקודות ו־‬ ‫4‬ ‫דוגמה נוספת‬ ‫נראה כעת פירוק מתקדם יותר לאותה סדרה באורך 8 = ‪ ,N‬הפעם לשלושה שלבים לפי בסיס‬ ‫2:‬ ‫‪N‬‬ ‫4‬ ‫פעולות פרפר.‬ ‫איור 3: ‪Radix-2 Decimation-in-Time FFT algorithm for a length-8 signal‬‬ ‫בשיטה זו מתבצעות 4 התמרות ‪ DFT‬באורך 2 נקודות, ולאחר מכן תיקונים וקומבינציות של‬ ‫האותות. זהו האלגוריתם השלם עבור 8 = ‪.N‬‬ ‫עבור מקרה כללי של ‪ N‬שהוא חזקה של 2, ניתן להמשיך ולבצע שלבים אלו עד שלב שבו כל‬ ‫ההתמרות שיש לבצע הן של 2 נקודות. התמרת ה־ ‪ DFT‬של 2 נקודות היא בעצמה פרפר. קל‬ ‫3‬ ‫לראות שיידרשו ‪ log2 N‬שלבים עד שנגיע לגודל מינימלי.‬ ‫החיסכון המשמעותי באלגוריתם ‪ FFT‬זה נובע מהשימוש החוזר בתוצאות ה־ ‪ DFT‬הקצרים יותר‬ ‫לחישוב ה־ ‪ DFT‬הארוכים. נמחיש את החיסכון עבור 4201 = ‪) N‬מתוך הלינק בהתחלה(:‬ ‫‪This is a remarkable savings over direct computation of the DFT. For example, a length-1024 DFT would‬‬ ‫‪require 1048576 complex multiplications and 1047552 complex additions with direct computation, but‬‬ ‫‪only 5120 complex multiplications and 10240 complex additions using the radix-2 FFT, a savings by a‬‬ ‫‪factor of 100 or more. The relative savings increase with longer FFT lengths, and are less for shorter‬‬ ‫.‪lengths‬‬ ‫לפי האלגוריתם שתיארנו לעיל, נדרשנו לבצע ‪ N‬פעולות פרפר בכל שלב, כאשר כל פרפר‬ ‫2‬ ‫דורש שתי פעולות כפל. באופן זה נגיע ל־ ‪ 2 · N · log2 N‬פעולות, אך אמרנו קודם שניתן להגיע‬ ‫2‬ ‫ל־ ‪ N log2 N‬בלבד. איפה החיסכון הנוסף?‬ ‫2‬ ‫נשים לב:‬ ‫‪N‬‬ ‫−‬ ‫−‬ ‫−‬ ‫‪= W N k W N 2 = −W N k‬‬ ‫) ‪−(k+ N‬‬ ‫2‬ ‫‪WN‬‬ ‫לכן ניתן לרשום את הפרפר הבסיסי באופן הבא:‬ ‫−‬ ‫] ‪G [k ] + WN k H [k‬‬ ‫=‬ ‫] ‪X [k‬‬ ‫−‬ ‫] ‪G [k ] − WN k H [k‬‬ ‫=‬ ‫‪N‬‬ ‫2‬ ‫+‪X k‬‬ ‫ייצוג זה של הפרפר תואם לציור הראשון מקודם )מויקיפדיה(. כאשר אילן צייר את זה קודם‬ ‫הופיעו שתי פעולות כפל, כעת אנו רואים שדרושה רק אחת. כעת ברור כיצד הגענו למספר‬ ‫הפעולות הסופי:‬ ‫‪N‬‬ ‫‪log2 N‬‬ ‫2‬ ‫‪levels‬‬ ‫↓‬ ‫= ‪log2 N‬‬ ‫·‬ ‫‪N‬‬ ‫2‬ ‫‪multiplications‬‬ ‫‪per buttery‬‬ ‫↓‬ ‫·‬ ‫1‬ ‫↑‬ ‫‪Butteries‬‬ ‫‪per level‬‬ ‫מהתבוננות באיור 2 לעיל ניתן לראות שאפשר לחשב את ה־ ‪ FFT‬כך שבכל שלב יחליפו‬ ‫תפוקות השלב את התפוקות באותם תאי זיכרון. אם כך, נוכל לבצע את האלגוריתם כך‬ ‫שבסופו תתפוסנה נקודות ההתמרה את תאי הזיכרון שנתפסו לפני ההתמרה ע"י הנקודות‬ ‫המקוריות. משמע, אין צורך בזיכרון נוסף לצורך חישוב ההתמרה. צורת חישוב כזאת נקראת‬ ‫‪ .In-Place Computation‬התנאי לביצוע החישוב בצורה זו הוא שלפני תחילת האלגוריתם ישונה‬ ‫סדר נקודות הסדרה.‬ ‫נבחן מה הסדר הדרוש של הנקודות לצורך ביצוע תקין של האלגוריתם: ניזכר כי בכל שלב‬ ‫הזזנו את הנקודות הזוגיות של כל תת־סדרה את החלק העליון, ואת הנקודות האי־זוגיות לחלק‬ ‫התחתון. הזזה מסוג זה מתאימה לחיפוש בעץ בינארי שבו נותנים בכל שלב עדיפות לענף‬ ‫הזוגי. התוצאה היא ש־ }]‪ {x [n‬הסדרה המקורית עוברת ל־ }]‪ {x [m‬כאשר ‪ m‬מתקבל ע"י היפוך‬ ‫הסיביות של הייצוג הבינארי של ‪) n‬קריאה מהסוף להתחלה(.‬ ‫פעולה זו נקראת היפוך סיביות, או ‪ ,bit reversal‬והיא חייבת להיעשות על הסדרה המקורית לפני‬ ‫תחילת ביצוע האלגוריתם.‬ ‫4‬ ‫‪ FFT‬ע"י דילול בתדר‬ ‫נציג אלגוריתם ‪ FFT‬דואלי לזה שהצגנו בתת־פרק הקודם, הנקרא "דילול בתדר" ־ -‪Decimation‬‬ ‫‪ .in-Frequency‬גם כאן נניח ש־ ‪ N‬הוא חזקה של 2, ונרשום את ]‪ X [k‬באופן הבא:‬ ‫‪N‬‬ ‫) ‪−k ( n+ N‬‬ ‫2‬ ‫‪WN‬‬ ‫=‬ ‫2‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫1−‬ ‫+‬ ‫+‪x n‬‬ ‫‪N‬‬ ‫2‬ ‫‪−kn‬‬ ‫0=‪n‬‬ ‫1− ‪N‬‬ ‫=‬ ‫‪x [n ] WN‬‬ ‫1−‬ ‫‪−kn‬‬ ‫‪x [n] WN‬‬ ‫0=‪n‬‬ ‫+‬ ‫‪−kn‬‬ ‫‪x [n] WN‬‬ ‫−‬ ‫‪WN kn‬‬ ‫=‬ ‫] ‪X [k‬‬ ‫0=‪n‬‬ ‫‪n= N‬‬ ‫2‬ ‫‪N‬‬ ‫2‬ ‫‪N‬‬ ‫2‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫‪k‬‬ ‫+ ‪x [n] + (−1) x n‬‬ ‫=‬ ‫0=‪n‬‬ ‫‪N‬‬ ‫−‬ ‫כאשר השתמשנו בעובדה 1− = 2 ‪.WN‬‬ ‫אם כך, נרשום את ]‪ X [k‬עבור ערכים סמוכים ל־ ‪ k‬אחד זוגי ואחד אי־זוגי באופן הבא:‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫−‬ ‫‪g [n] WN/mn‬‬ ‫2‬ ‫=‬ ‫‪−mn‬‬ ‫2/‪WN‬‬ ‫0=‪n‬‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫‪−n‬‬ ‫−‬ ‫‪h [n] WN/mn‬‬ ‫2‬ ‫2/‪= WN‬‬ ‫‪−mn‬‬ ‫‪−n‬‬ ‫2/‪WN/2 WN‬‬ ‫0=‪n‬‬ ‫כאשר }]‪ {g [n‬ו־ }]‪ {h [n‬הן סדרות בנות‬ ‫‪N‬‬ ‫2‬ ‫‪N‬‬ ‫+ ‪x [n] + x n‬‬ ‫2‬ ‫‪N‬‬ ‫+ ‪x [n] + x n‬‬ ‫2‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫=‬ ‫]‪X [2m‬‬ ‫0=‪n‬‬ ‫1−‬ ‫‪N‬‬ ‫2‬ ‫=‬ ‫]1 + ‪X [2m‬‬ ‫0=‪n‬‬ ‫נקודות כ"א.‬ ‫הפרפר הבסיסי שיוצר את }]‪ {g [n‬ו־ }]‪ {h [n‬מתוך ]‪ x [n‬ו־‬ ‫‪N‬‬ ‫2‬ ‫+ ‪ x n‬נראה כך:‬ ‫איור 4: ‪DIF buttery: twiddle factor after length-2 DFT‬‬ ‫ניתן לראות שפרפר בסיסי דורש פעולת כפל אחת. מספר הפרפרים בשלב הראשון הוא‬ ‫ותפוקתן היא שתי סדרות בנות ‪ N‬נקודות כ"א. בהמשך, אלגוריתם זה דומה לאלגוריתם הקודם,‬ ‫2‬ ‫ובסה"כ מקבלים ‪ log2 N‬שלבים כאשר בכל שלב ‪ N‬פרפרים.‬ ‫2‬ ‫‪N‬‬ ‫2‬ ‫5‬ ‫איור 5: ‪Radix-2 decimation-in-frequency FFT for a length-8 signal‬‬ ‫• כפי שרואים, הכניסות לאלגוריתם דילול בתדר הן בסדר הטבעי, ואילו המוצאים הינם בסדר‬ ‫סיביות מבולגן.‬ ‫1‬ ‫• מספר הפעולות הכולל הוא ‪ , 2 N log2 N‬בדיוק כמו באלגוריתם ‪) DIT‬דילול בזמן(.‬ ‫התמרת פורייה מהירה ־ הערות מסכמות‬ ‫• שני האלגוריתמים הבסיסיים שתוארו בהרצאה זו הם עבור מקרה שבו ‪ N‬הוא חזקה של 2.‬ ‫• הרחבה פשוטה עבור סדרות שאינן מקיימות תנאי זה של חזקה ב־ 2 היא ריפוד באפסים‬ ‫)אם בזמן אז בסוף הסדרה, אם בתדר אז באמצע(. הרחבה נוספת על ריפוד באפסים ־‬ ‫בהרצאות בהמשך.‬ ‫נשים לב שבמקרה הגרוע של מספר מהצורה 1 + ‪ 2r‬כאשר ‪ ,r ∈ N‬נבצע בשל הריפוד‬ ‫באפסים בערך פי 2 פעולות מאשר עבור ‪.2r‬‬ ‫)היו כאן גם הגדרה מתמטית של הריפוד באפסים וקצת חישובים, לא משהו מרתק שאין‬ ‫בהרצאות בהמשך(‬ ‫• אם ‪ N‬אינו חזקה של 2 אך ניתן לפרקו למספר גורמים ראשוניים אחרים, למשל 2, 3 ו־ 5,‬ ‫ניתן לבנות אלגוריתמי ‪ FFT‬לא בינאריים ללא ריפוד באפסים )ראה דיון ב־ ‪.(N = P Q‬‬ ‫−‬ ‫• חישוב המקדמים ‪ WN k‬דורש זמן רב, מאחר והוא כרוך במציאת פונקציות טריגונומטריות.‬ ‫חישובם בזמן אמת עשוי לנטרל את היתרונות של ‪ FFT‬מבחינת מהירות הביצוע. על כן,‬ ‫נהוג לחשב מקדמים אלו חד־פעמית מראש, ולשמור את התוצאות בטבלאות לשימוש‬ ‫בעת הצורך.‬ ‫6‬ ...
View Full Document

This note was uploaded on 01/14/2012 for the course ELECTRICAL 361-1-3321 taught by Professor Dr.ilanshalom during the Summer '11 term at Ben-Gurion University.

Ask a homework question - tutors are online