8.6

התמרות פורייה ולפלס

קונבולוציה ותגובת מערכת

Convolution (Fourier and Laplace)

קונבולוציה מחברת כל חלק מן הקלט להעתק מוזז של תגובת ההלם. במרחב התדר היא הופכת לכפל, ובדגימות מחזוריות היא מיוצגת על ידי מטריצה circulant.

יחידת לימוד עצמאיתשיעור 6 מתוך 6כ־75 דקות כולל תרגול3 מטרות למידה
  1. 1
    נקודת פתיחהמה כבר ידוע ומה השאלה?
  2. 2
    ניבוימה יקרה במקרה הפשוט?
  3. 3
    המחשהמה באמת משתנה בתמונה?
  4. 4
    ניסוח והצדקהשם, נוסחה ולמה היא נכונה
  5. 5
    בדיקהדוגמה, תרגול ומשוב
  6. 6
    העברהמקרה חדש והמשך המסלול

שאלה לפני נוסחה

מה אנחנו מנסים לראות?

לחשב קונבולוציה בדידה, מחזורית ורציפה, לפרש אותה כסכום תגובות מוזזות, ולהשתמש במשפט ההתמרה לחיבור בין קלט, תגובת הלם ופלט.

כל קלט אפשר לחשוב כאוסף של הלמים זעירים בזמנים שונים. מערכת שאינה משתנה בזמן מגיבה לכל הלם באותה צורה g, רק מוזזת ומוכפלת. הפלט הכולל הוא סכום כל ההעתקים החופפים ברגע הנוכחי.

לפני ההמחשה: קראו רק את הכותרת “קלט, תגובת הלם והסכום המצטבר”. מה לדעתכם ישתנה, מה יישאר קבוע, ואיזה סימן בתמונה יוכל להפריך את הניבוי?

לראות לפני שמחשבים · המקרה הפשוט ביותר

קלט, תגובת הלם והסכום המצטבר

קונבולוציה מסכמת את החפיפה בין הקלט לבין תגובת הלם הפוכה ומוזזתf(τ): פולסg(t−τ): מוזזתy=f∗g(f∗g)(t)=∫₀ᵗf(τ)g(t−τ)dτL{f∗g}=F(s)G(s)לאחר שהפולס נגמר, זנב הפלט הוא זיכרון המערכת
עקבו מהצורה הראשונית אל התוצאה

האיור מציג f(t),‏ g(t)=e^(−at) ואת y=f∗g עבור קלט מדרגה, פולס או קלט מושהה.

מה כדאי לגלות: בקלט פולס, הפלט ממשיך גם אחרי שהקלט חזר לאפס: הזנב הוא הזיכרון שנשאר בתגובת ההלם.

אחרי שראינו

בסוף השיעור תוכלו

  • לחשב קונבולוציה לינארית ומחזורית ולהסביר את ההבדל באורך ובקיפול האינדקסים.
  • לגזור את נוסחת הקונבולוציה למערכת לינארית סיבתית מתוך תגובת ההלם.
  • להשתמש ב־L{f∗g}=FG וב־DFT של מטריצה circulant כדי לזהות סינון והפיכות.

נותנים שמות למה שראינו

מושגים שנשתמש בהם

קונבולוציה
פעולה שמחליקה, מזיזה ומכפילה שתי פונקציות ואז מסכמת את החפיפה.
תגובת הלם g
פלט המערכת לקלט δ; היא קובעת את תגובת המערכת לכל קלט אחר.
מערכת LTI
מערכת לינארית שאינה משתנה בזמן, ולכן שומרת חיבור, כפל והזזה.
קונבולוציה לינארית
בדגימות באורך m ו־n מתקבל פלט באורך m+n−1 ללא קיפול מחזורי.
קונבולוציה מחזורית
אינדקסים נלקחים modulo N, ולכן זנב הפלט מתקפל אל תחילתו.
מטריצה circulant
מטריצה שכל שורה שלה היא הזזה מחזורית; ה־DFT מלכסנת אותה.

מהמילים אל הסימנים

כותבים את הפעולה שכבר ראינו

פתחו את הנוסחה רק אחרי שאתם יכולים לומר במילים מה כל פעולה אמורה לעשות. בשלב הבא נצדיק אותה צעד אחר צעד.

להצגת נוסחת המפתחקראו כל סימן כפעולה, לא כמשהו שצריך לשנן(f∗g)(t)=∫₀ᵗf(τ)g(t−τ)dτ; L{f∗g}=F(s)G(s)

מרכיבים את הפעולות

מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים

  1. מתחילים מהלם מוזז

    כל פונקציה ניתנת פורמלית כסכום רציף של הלמים מוזזים, שכל אחד משוקלל בערך הקלט בזמן τ.

    f(t)=∫₋∞^∞f(τ)δ(t−τ)dτ
  2. מפעילים לינאריות והזזה

    אם תגובת המערכת ל־δ(t) היא g(t), אז תגובתה ל־δ(t−τ) היא g(t−τ), והמשקל f(τ) נשמר.

    δ(t−τ) → g(t−τ)
  3. מחברים את כל התגובות

    לינאריות מעבירה את האינטגרל דרך המערכת. במערכת סיבתית שתי הפונקציות אפס לפני 0 ולכן הגבולות מצטמצמים ל־0≤τ≤t.

    y(t)=(f∗g)(t)=∫₀^t f(τ)g(t−τ)dτ
  4. מוכיחים את משפט ההתמרה

    מתמירים את האינטגרל הכפול, מחליפים סדר אינטגרציה ומבצעים את ההצבה r=t−τ. האינטגרל נפרד למכפלת שני אינטגרלים.

    L{f∗g}=F(s)G(s)
  5. עוברים לדגימות

    בקונבולוציה לינארית, כל זוג אינדקסים j,k תורם למקום j+k. לכן שני וקטורים באורכים m,n יוצרים m+n−1 מקומות.

    (v∗w)ᵣ=Σⱼvⱼwᵣ₋ⱼ
  6. מקפלים מחזורית

    כאשר האותות מחזוריים באורך N, האינדקס r−j נלקח modulo N. הפעולה היא כפל במטריצה circulant.

    (v⊛w)ᵣ=Σⱼvⱼw_(r−j mod N)
  7. מלכסנים בעזרת DFT

    הווקטורים המעריכיים הם וקטורים עצמיים של כל מטריצה circulant. לכן קונבולוציה מחזורית הופכת לכפל רכיב־רכיב בתדר.

    DFT(v⊛w)=DFT(v)·DFT(w)

עכשיו רואים את השיטה בפעולה

דוגמאות פתורות, צעד אחר צעד

דוגמה 1

לינארית מול מחזורית

חשבו (1,2)∗(2,1) וגם את הקונבולוציה המחזורית באורך 2.

  1. בפלט הלינארי המקום 0 מקבל 1·2=2.

  2. המקום 1 מקבל 1·1+2·2=5.

  3. המקום 2 מקבל 2·1=2, ולכן האורך הוא 3.

  4. במחזוריות המקום 2 מתקפל אל מקום 0 ומוסיף 2.

  5. לכן הפלט המחזורי הוא (4,5).

התוצאה ומה היא אומרת

(1,2)∗(2,1)=(2,5,2); (1,2)⊛(2,1)=(4,5).

דוגמה 2

תגובה למדרגה דרך קונבולוציה

עבור y′+y=f ממנוחה, חשבו את הפלט ל־f(t)=H(t).

  1. תגובת ההלם היא g(t)=H(t)e^(−t).

  2. הפלט הוא ∫₀^t1·e^(−(t−τ))dτ.

  3. מציבים r=t−τ או מאינטגרלים ישירות.

  4. מתקבל 1−e^(−t), המתחיל ב־0 ומתקרב ל־1.

התוצאה ומה היא אומרת

(H∗He^(−t))(t)=1−e^(−t).

איפה זה פוגש את העולם

יישום

ממוצע נע, טשטוש תמונה, הד בחדר, תגובת מעגל וכפל פולינומים הם אותה פעולה בצורות שונות. FFT מאפשרת לחשב קונבולוציות ארוכות באמצעות שתי התמרות, כפל אחד והתמרה הפוכה.

מלכודת נפוצה

מה כדאי לבדוק

לבלבל קונבולוציה עם כפל נקודתי. בזמן קונבולוציה כוללת הזזה וסכימה; רק לאחר התמרה היא הופכת לכפל נקודתי. גם קונבולוציה מחזורית אינה זהה ללינארית בלי zero-padding.

בודקים שהרעיון יושב

תרגול ומשוב

בדיקת הבנה

בחרו תשובה ורק אז בדקו את עצמכם

מה אורך הקונבולוציה הלינארית של וקטורים באורכים 5 ו־3?

בחרו אחת מהאפשרויות כדי להמשיך.

עכשיו אתם

אתגר קצר

הראו מדוע קונבולוציה מחזורית עם c=(1,1) אינה הפיכה באורך 2 בארבע דרכים: דטרמיננטה, ערכים עצמיים, גרעין ו־DFT.

רמז ראשון

מטריצת הקונבולוציה היא [[1,1],[1,1]]. נסו את הווקטור (1,−1).

הצגת דרך הפתרון
  1. הדטרמיננטה היא 1−1=0.
  2. הערכים העצמיים הם 2 בכיוון (1,1) ו־0 בכיוון (1,−1).
  3. לכן (1,−1) נמצא בגרעין ושתי כניסות שונות יכולות לתת אותו פלט.
  4. DFT(1,1)=(2,0); התדר השני נמחק, ולכן אי־אפשר לבצע deconvolution בו.

מימוש הנושא

קוד שאפשר לקחת לניסוי

הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.

הקשר למתמטיקה

הקוד מקצה פלט באורך m+n−1 ומוסיף כל מכפלה vⱼwₖ למקום j+k; בגרסה המחזורית האינדקס נלקח modulo N.

פלט צפוי

עבור (1,2) ו־(2,1) יתקבלו (2,5,2) בלינארית ו־(4,5) במחזורית.

ניסוי המשך

הוסיפו אפסים לשני הווקטורים עד אורך 4 ובצעו קונבולוציה מחזורית. מדוע היא מסכימה כעת עם הלינארית?

מהרעיון אל הקוד

מימוש חישובי

function convolution(left,right) {
  const out=Array(left.length+right.length-1).fill(0);
  left.forEach((a,i)=>right.forEach((b,j)=>out[i+j]+=a*b));
  return out;
}

function cyclic(left,right) {
  const N=left.length;
  return Array.from({length:N},(_,r)=>left.reduce(
    (sum,a,j)=>sum+a*right[(r-j+N)%N],0));
}

console.log(convolution([1,2],[2,1]));
console.log(cyclic([1,2],[2,1]));

לפני שממשיכים

מה לוקחים מהשיעור

  • קונבולוציה היא סכום של תגובות הלם מוזזות ומשוקללות.
  • במערכת סיבתית האינטגרל מצטמצם לעבר 0≤τ≤t.
  • התמרות פורייה ולפלס הופכות קונבולוציה לכפל.
  • אפס בספקטרום של המסנן מוחק מידע והופך deconvolution לבלתי אפשרית.

משימת מעבדה לשיעור הזה

תחנה 4 — מקלט לפלט דרך תגובת הלם

בחרו מדרגה, פולס או השהיה, ושוו בין הקלט, תגובת ההלם והפלט המצטבר y=f∗g.

לפתיחת התחנה
מקורות להעמקה בלבד — השיעור עומד בפני עצמו

מדריך המרצים: עמ׳ 234–240

ספר הלימוד: עמ׳ 479–489