So arbeiten Sie und Überprüfen Convolution Integral und Sum Probleme

Die Beherrschung Faltung Integrale und Summen kommt durch die Praxis. Hier sind detaillierte analytische Lösungen für ein Faltungsintegral und zwei Faltungssumme Probleme, die jeweils gefolgt von detaillierten numerischen Überprüfungen, mit PyLab aus der IPython interaktive Shell (die QT-Version im Besonderen).

Kontinuierliche Zeit Faltung

Hier ist ein Faltungsintegral Beispiel den Einsatz von teil unendlicher Ausdehnung Signale. Betrachten wir die Faltung x(t) = u(t) (Ein Schritt Funktionseinheit) und

bild0.jpg

(Eine echte exponentiellen Abfall ab t = 0). Die Figur stellt eine graphische Darstellung der Wellenformen.

Der Ausgang Unterstützung Intervall

image2.jpg

Sie müssen zwei Fällen (Schritte), um die analytische Lösung gilt über die gesamte Zeitachse zu bilden.

  • Fall 1: Mit Abbildung b, kann man deutlich sehen, dass für t lt; 0 ist, folgt daraus, dass y(t) = 0.

  • Fall 2: Wieder in Abbildung b suchen, sehen Sie, dass für t # 8805- 0, tritt eine gewisse Überlappung immer zwischen den beiden Signalen des Integranden. Die Faltungsintegral Ausgang

    image3.jpg

Setzen Sie die beiden Teile zusammen, die analytische Lösung für y(t) ist

image4.jpg

Um diese analytische Lösung zu überprüfen, gehen die gleichen Schritte, die Sie in dem früheren Beispiel verwendet:

  1. Schreiben Sie eine einfache Python-Funktion für die analytische Lösung Plotten:

    Im [133]: Def expo_conv (t, A, alpha): ...: y = Nullen (len (t)) ...: für k, tk in enumerate (t): ...: wenn tk> = 0 :. ..: y [k] = A / alpha * (1 - exp (-alpha * tk)) ...: return y
  2. Für die numerische Faltung, Verwendung ssd.conv_integral (). Sie erste Python-Code im Befehlsfenster schreiben, um die Signale zu erzeugen, x(t) und h(t) Und führen Sie dann die Faltung:

    Im [135]: T = arange (-4,14, .01) In [136]: Xc2 = ssd.step (t) In [137]: HC2 = ssd.step (t) * exp (-1 * t) In [138]: Yc2_num, tyc2 = ssd.conv_integral (xc2, t, HC2, t, ( 'r', 'r')) Ausgangs Unterstützung: (-8,00, 5,99) in [143]: Subplot (211) In [144]: Plot (t, expo_conv (t, 1,1)) In [149]: Subplot (212) In [151]: Grundstück (tyc2, yc2_num) In [156]: Savefig ( 'c2_outputs.pdf')

    Beachten Sie, dass das fünfte Argument der conv_integral Funktion ist ( 'R', 'r'). Für Signale mit unendlicher Ausdehnung nach rechts, die jeweils 'R' erzählt die Funktion, die beide Signale richtig sind; seitig und nur die gültigen Support-Intervall unter dieser Annahme zurückzukehren.

    Die Standardwerte von ( 'F', 'f') bedeutet für beide Signale über die Eingangszeitachsen endliche Unterstützung t1 und t2 an die Funktion gegeben.

Wiederum ist die Übereinstimmung sehr gut, so dass die analytische Lösung überprüft wird.

Stellen Sie sicher, diskreter Zeit Faltung

Für den Fall von zeitdiskreten Faltungs, sind hier zwei Faltungssumme Beispiele. Die erste verwendet endlicher Ausdehnung Sequenzen (Signale) und die zweite beschäftigt semi-infinite Umfang Signale. Sie stoßen auf beide Arten von Sequenzen bei der Problemlösung, aber endliche Ausdehnung Sequenzen sind die üblichen Ausgangspunkt, wenn Sie zuerst mit der Faltungssumme arbeiten.

Zwei endlicher Länge Sequenzen

Betrachten wir die Faltungssumme der beiden Sequenzen x[n] und h[nhier zusammen mit der Faltungssumme Setup], gezeigt.

Wenn endlicher Dauer Sequenzen Faltung, können Sie die analytische Lösung tun fast durch Inspektion oder vielleicht durch die Verwendung einer Tabelle (auch eine Tabelle), um die Sequenzwerte für jeden Wert zu organisieren n, was eine Nicht-Null-Überlappung zwischen h[k] und x[n - k].

Die Unterstützung Intervall für die Ausgabe folgt der für den kontinuierlichen Zeitbereich gegebenen Regel. das Ausgangs y[n] Beginnt an der Summe der beiden Eingangssequenz Punkten beginnt und endet an der Summe der Eingangssequenz Endpunkte. Für das Problem bei der Hand entspricht dies y[n] Ab [0 + -1] = -1 und [3 + 1] = 4 endet.

In Abbildung b, können Sie sehen, dass als n steigt von n lt; -1, Erste Überlappung tritt auf, wenn n = -1. Der letzte Punkt der Überlappung tritt auf, wenn n - 3 = 1 oder n = 4. Sie können eine Tabelle Tabelle eingerichtet, um die sechs Summe-von-Produkten mit dem Ausgang Unterstützung Intervall mit Bezug zu bewerten.

Um diese Hand (Tabelle) Berechnungswerte zu überprüfen, verwenden Python-Funktionen in ssd.py die Faltungssumme auszuführen. Die Faltung Summenfunktion ist y, ny = ssd.conv_sum (x1, NX1, x2, nx2, Umfang = ( 'f', 'f')).

Im [208]: N = arange (-4,6) In [209]: XD1 = 2 * ssd.drect (n, 4) in [210]: HD1 = 1,5 * ssd.dimpulse (n) - 0,5 * ssd.drect (n + 1,3) In [211]: Yd1_num, nd1 = ssd.conv_sum (xd1, n, HD1, n) Ausgangs Unterstützung: (-8, +10) In [212]: Stiel (ND1, yd1_num)

Siehe die numerischen Ergebnisse Ausgangssequenz aufgetragen.

Die Ergebnisse der numerischen Berechnung entsprechen in der Tat auf der Hand Berechnung.

Eine endliche und ein halb unendliche Folge

Als ein zweites Beispiel mit der Faltung von Arbeits eine endliche Dauer Impulssequenz von 2 betrachtenM + 1 Punkte mit der unendlichen Halb exponentiellen Sequenz convolved einnu[n] (Eine echte exponentiellen Abfall ab n = 0). Eine graphische Darstellung der Wellenformen ist hier gegeben.

Mit Hilfe von Figur b, gibt es drei Fälle, bei der Auswertung der Faltung für alle Werte zu betrachten n. Der Stützintervall für die Faltung

image10.jpg

Hier sind die Schritte für jeden Fall:

  • Fall 1: Aus Abbildung b, sehen Sie, dass für n + M lt; 0 oder n lt; -M keine Überlappung tritt zwischen den beiden Sequenzen der Summe, so y[n] = 0.

  • Fall 2: Teilweise Überlappung zwischen den beiden Sequenzen auftritt, wenn n + M # 8805- 0 und n - M # 8804- 0 oder -M # 8804- n # 8804- M. Die Summe Grenzen beginnen bei k = 0 und am Ende k = n + M. Mit Hilfe der Finite-geometrische Reihe Summenformel wertet die Faltungssumme zu

    image11.jpg
  • Fall 3: Vollständige Überlappung tritt auf, wenn n - M > 0 oder n > M. Die Summe Grenzen unter diesem Fall laufen aus k = n - M nach k = n + M. Auch die endliche geometrische Reihe Summenformel verwenden, wertet die Faltungssumme zu

    image12.jpg

Setzt man die Stücke zusammen, die komplette analytische Lösung für dieses Problem ist,

image13.jpg

Um die analytische Lösung mit der numerischen Lösung vergleichen zu können, folgen Sie den Schritten, die analytische Funktion gegen eine Handlung der tatsächlichen Faltungssumme Plotten:

  1. Schreiben Sie eine Python-Funktion zu bewerten y[n] Als weise definierte Funktion:

    Im [239]: Def expo_pulse_conv (n, a, M): ...: y = Nullen (len (n)) ...: für k, nk in enumerate (n): ...: wenn nk> = -M und nk lt; = M: ...: y [k] = 2 * (1 - a ** (nk + M + 1)) / (1 - a) ...: elif nk> M: ...: y [k] = 2 * (a ** (nk-M) - a ** (nk + M + 1)) / (1 - a) ...: return y
  2. Finden Sie die tatsächliche Faltungssumme mit der Funktion conv_sum () und dann Auftragen der Ergebnisse:

    Im [255]: N = arange (-5,30) # n Werte für x [n] h [n] in [256]: Xd2 = 2 * ssd.drect (n + 4,9) # erstellen x [n] in [257]: HD2 = ssd.dstep (n) * 0,6 ** n # erstellen h [n] in [258]: Yd2_num, ND2 = ssd.conv_sum (xd2, n, HD2, n, ( 'f', 'r')) Ausgangs Unterstützung: (-10, 24) in [259]: Subplot (211) In [260]: Stiel (n, expo_pulse_conv (n, 0.6,4)) # analyticalIn [265]: Subplot (212) In [266]: Stiel (ND2, yd2_num) # numericalIn [271]: Savefig ( 'd2_outputs.pdf')

    Verwenden Sie das fünfte Argument der conv_sum () dazu dienen, die Ausdehnung der zweiten Eingangssequenz nach rechts zu erklären; sided ( 'R'), als auf den Standardwert von endlichen Gegensatz ( 'F'). Diese Einstellung stellt sicher, dass die Funktion nicht ungültige Ergebnisse zurückgibt.

Hier sehen Sie, dass die abschnittsweise analytische Lösung günstig im Vergleich zu den direkten Faltungssumme numerische Berechnung.

Menü