So überprüfen Sie ein Faltungsintegral Problem Numerisch

Hier ist eine detaillierte analytische Lösung für ein Faltungsintegral Problem, gefolgt von detaillierten numerischen Verifikation, mit PyLab aus der IPython interaktive Shell (die QT-Version im Besonderen). Die Absicht der numerischen Lösung ist es zu zeigen, wie Computer-Tools analytische Lösungen zur Faltung Probleme überprüfen können.

Richten Sie PyLab

Um mit PyLab und die IPython interaktive Shell, können Sie leicht die Tools auf Mac OS, Windows und Ubuntu Linux einrichten.

Einstellen auf Ubuntu Linux oben ist vielleicht die einfachste, weil Sie nur die verwenden können Ubuntu Software Center. Unter Mac und Windows-Betriebssystem können Sie ein verwenden monolithische Installation, die installiert die meisten alles, was Sie auf einmal benötigen. Schauen Sie sich die kostenlose Version aus enthought, aber andere sind im Internet verfügbar.

Stellen Sie sicher, zeitkontinuierlichen Faltung

Hier ist eine Faltung Beispiel unter Verwendung von endlicher Ausdehnung Signale. Vollständige analytische Lösungen enthalten sind, aber der Schwerpunkt liegt auf numerische Verifikation, insbesondere unter Verwendung von PyLab und die frei verfügbaren benutzerdefinierten Code-Modul ssd.py zuvor erwähnt.

Betrachten Sie das Faltungsintegral für zwei zeitkontinuierliche Signale x(t) und h(t) Gezeigt.

Um bei der analytischen Lösung kommen, müssen Sie das Problem zu brechen in fünf Fällen oder Zeitintervallen t wo kann man das Integral auswerten eine abschnittsweise zusammenhängende Lösung zu bilden. Wenn Sie diese fünf zusammenhängende Intervalle zusammengesetzt, haben Sie eine komplette Lösung für alle Werte von t:

image1.jpg

Aus dem Studium der Faltung Integrale, entdecken Sie, dass Sie die Unterstützung oder aktive Intervall für die Ausgabe schreiben y(t) In Bezug auf den Stützintervalle für jedes der Eingangssignale. Das Ergebnis besagt, dass das Ausgangsstützintervall von der Summe der Ausgangswerte läuft x(t) und h(t) Und endet an den Endwert. Somit ist die Stützintervall für y(t) Höchstens

image2.jpgimage3.jpg

In diesem Beispiel ist jeder Fall als ein Schritt in der Lösung zu behandeln, die folgt:

  • Fall 1: Sie beginnen mit t + 1 lt; 0 oder äquivalent t lt; -1. Das Produkt der Wellenformenh(# 955-) und x(t - # 955-) überlappen sich nicht in der Faltungsintegral Integra, so dass für Fall 1 ist das Integral nur y(t) = 0 für t lt; -1.

  • Fall 2: Betrachten Sie das nächste Intervall nach rechts von Fall 1. Dieser Fall durch den Verbindungszustand der Signalflanke gebildet wird, an t + 1 # 8805- 0 und t + 1 lt; 3, die äquivalent zu schreiben ist -1 # 8804- t lt; 2. Der Integrand des Faltungsintegrals ist 2 x 3, wobei die Integrationsgrenzen von 0 bis verlauf t + 1.

    Sie finden y(t) In diesem Intervall durch das Faltungsintegral Auswertung:

    image4.jpg
  • Fall 3: Das nächste Intervall in der Reihe ist, t + 1 # 8805- 3 ​​und t - 4 lt; 0 oder 2 # 8804- t lt; 4. Der Integrand ist wieder 2 x 3, aber jetzt sind die Integrationsgrenzen laufen von 0 bis 3. Auswertung der Faltungsintegral ergibt die folgende:

    image5.jpg
  • Fall 4: Das letzte Intervall Überlappung Einbeziehung Signal tritt auf, wenn t - 4 # 8805- 0 und t - 4 lt; 3, die 4 bedeutet, dass # 8804- t # 8804- 7. Die Integrationsgrenzen laufen aus t - 4: 3, so dass das Faltungsintegral Ergebnis ist

    image6.jpg
  • Fall 5: Sie können sehen, dass, wenn t - 4> 3 oder t > 7 tritt keine Überlappung zwischen den Signalen des Integranden, so ist der Ausgang y(t) = 0, t > 7.

Das Sammeln der verschiedenen Teile der Lösung, haben Sie die folgenden:

image7.jpg

Überprüfen Sie diese Lösung mit Python besteht aus zwei Schritten: (1) die analytische Lösung Plotten und (2) es mit der Handlung der numerischen Lösung zu vergleichen, Funktionen im Code-Modul gefunden mit ssd.py. Hier sind die Details für diese Schritte ausführen:

  1. Erstellen Sie eine weise definierte Funktion in Python, die Sie dann einen benutzerdefinierten Bereich von Zeitwerten zu bewerten übergeben können.

    Diese Funktion können Sie direkt in der IPython Schale schreiben, wie hier gezeigt:

    Im [68]: Def pulse_conv (t): ...: y = Nullen (len (t)) # initialisieren Ausgabe-Array ...: für k, tk in enumerate (t): # y (t) Werte ... machen: wenn tk> = -1 und tk lt; 2: ...: y [k] = 6 * tk + 6 ...: Elif tk> = 2 und tk lt; 4: ...: y [k] = 18 ...: Elif tk> = 4 und tk lt; = 7: ...: y [k] = 42-6 * tk ...: return y

    Beachten Sie, dass die Sprache Python Einzüge empfindlich ist, so achten Sie auf den Einschnitten, wenn Sie diesen Code in IPython eingeben. Die gute Nachricht ist, dass IPython die Bedürfnisse von Python versteht und macht einen guten Job automatisch Codeblock einrücken.

  2. Numerisch bewerten die Faltung von ersten Darstellungen der tatsächlichen Wellenformen der Faltung zu schaffen und dann die numerische Faltung durchgeführt wird.

    Um den Zugriff auf die Funktionen im Modul erhalten ssd.py, müssen Sie das Modul in Ihrer IPython Sitzung zu importieren, mit In [69]: import ssd.

    Dann können Sie die Funktionen im Modul zugreifen, indem Sie den Namespace-Präfix ssd. Die Funktion y, ny = ssd.conv_integral (x1, TX1, x2, tx2, Umfang = ( 'f', 'f')) führt die eigentliche Faltung.

    Sie laden Zeit abgetastete Versionen der Signale in die Argumente gefaltet werden x1 und x2, mit TX1 und tx2 wobei die entsprechenden Zeitachsen. Alle vier dieser Variablen sind NumPy ndarrays. Die Funktion gibt das Faltungsergebnis y gefolgt von ny, als Python-Tupel. Die rechteckige Pulsformen werden mit der Funktion geschaffen ssd.rect (n, tau) und Zeitschaltachse in den Funktionsargumente.

    Dass sie alle zusammen, um den Code für numerisch angenähert die Faltungsintegral Ausgabe lautet wie folgt (nur kritische Code-Anweisungen dargestellt):

    Im [89]: T = arange (-8,9, .01) In [90]: Xc1 = 2 * ssd.rect (t-1.5,5) In [91]: HC1 = 3 * ssd.rect (t-1.5,3) In [93]: Subplot (211) In [94]: Plot (t, xc1) In [99]: Subplot (212) In [100]: Plot (t, HC1) in [101]: Savefig ( 'c1_intputs.pdf') In [115]: Yc1_num, tyc1 = ssd.conv_integral (xc1, t, HC1, t) Ausgangs Unterstützung: (-16,00, 17,98) in [116]: Subplot (211) In [117]: Plot (t, pulse_conv (t)) in [123]: Subplot (212) In [125]: Grundstück (tyc1, yc1_num) In [130]: Savefig ( 'c1_outputs.pdf')

    Die folgende Abbildung zeigt Diagramme der Signale x(t) und h(t).

Schließlich wird die numerische Darstellung von y(t) Wird zusammen mit der analytischen Lösung gezeigt aufgetragen.

Von einem Grundstück Perspektive, die beiden Lösungen einverstanden sind, so dass die analytische Lösung bestätigt.

Menü