Computers

Faltung in Matlab mit Codebeispielen

Autor: Laura McKinney
Erstelldatum: 3 April 2021
Aktualisierungsdatum: 17 September 2024
Anonim
Fluid-Simulation für VFX mit PyOpenCl
Video: Fluid-Simulation für VFX mit PyOpenCl

Inhalt

Diskrete, kontinuierliche und kreisförmige Faltungen können in Matlab® innerhalb von Sekunden ausgeführt werden, vorausgesetzt, Sie erhalten den betreffenden Code und einige andere grundlegende Dinge.

Dieses Tutorial zielt darauf ab:

  • Demonstrieren Sie auf vereinfachte Weise die erforderlichen Komponenten des Codes, mit denen die Faltung in Matlab durchgeführt wird.
  • Visualisieren Sie die Ergebnisse, indem Sie Diagramme von gewundenen Funktionen zeichnen.

Dieses Tutorial ist in der folgenden Reihenfolge angeordnet:

  1. Faltet weiter.
  2. Diskrete Faltung.
  3. Kreisfaltung.

Logik:

Das einfache Konzept hinter Ihrer Codierung sollte sein:

1. Definieren Sie zwei diskrete oder Contineus-Funktionen.

2. Falten Sie sie mit der Matlab-Funktion 'conv ()'.

3.Zeichnen Sie die Ergebnisse mit 'subplot ()'.


Setzt die Faltung in Matlab fort

Wir werden dies anhand von zwei Fortsetzungsfunktionen demonstrieren:

  1. Eine Pulswellenform. Bezeichnet durch die Funktion 'square ()'. Dies ist die Eingabe x (t) in das System.
  2. Einschwingverhalten eines Kondensators. Bezeichnet durch die Gleichung der Form a * e1 / RC * t. Dies könnte als Impulsantwort h (t) des Systems angesehen werden.

Matlab-Code für die Faltung

Farbton = 0; tfinal = 0,05; tstep = 0,0005; t = Farbton: Schritt: Endpunkt; x = 4 * Quadrat (500 * t, 50); // Verwenden Sie hier eine Funktion Ihrer Wahl. Untergrund (3, 1, 1); Diagramm (t, x); h = 400 * exp ((-400 * t)); // Verwenden Sie eine Funktion Ihrer Wahl. Untergrund (3, 1, 2); Diagramm (t, h); t2 = 2 * tint: tstep: tfinal * 2; // Die verschlungene Funktion erfordert, dass ein größerer Bereich vollständig dargestellt wird. y = conv (x, h) * tstep; Untergrund (3, 1, 3); Diagramm (t2, y);

Zeile 1-5: Definieren Sie den Wertebereich für die Zeitachse.

Zeile 7: Eine Rechteckwelle wird mit der Matlab-Funktion initialisiert. 'Quadrat()'es hat eine Amplitude von 4, ω = 500 rad / s und ein Tastverhältnis von 50%.


Zeile 9:Nebenhandlung() Partitioniert das Ausgabefenster, um 3 Diagramme auf einem einzigen Bildschirm aufzunehmen, d. h. es erstellt eine Tabelle mit 3 Zeilen und 1 Spalte (n) und dann das letzte Argument in Nebenhandlung() wählt das erste Diagramm für die weitere Arbeit aus.

Zeile 10: Diagramme x (t).

Zeile 12-15: Die Impulsantwort des Systems h (t) ist definiert. Nebenhandlung() wählt den 2. Graphen aus und zeichnet h (t) darauf.

Zeile 18: Für die resultierende gewundene Funktion wird ein neuer Bereich definiert.

Zeile 19-22: x (t) wird schließlich mit h (t) gefaltet und dann über diesen neuen Bereich aufgetragen. * tstep wurde hinzugefügt, um die x- und y-Achse entsprechend anzupassen.

Diskrete Faltung in Matlab

Das Durchführen einer diskreten Faltung in Matlab ist sehr einfach und unkompliziert. Sie müssen nur die diskreten Werte jeder Funktion definieren und dann die Funktion anwenden. 'conv ()'auf diese beiden Funktionen.


Matlab-Code für diskrete Faltung

a = -1; // Dies ist der Startwert der Zeit für x (t). b = 0; // Startwert der Zeit für h (t). x = [2 -1 1]; h = [3 2 1]; Untergrund (3, 1, 1); t = a: a + Länge (x) -1; // tstep ist hier nicht erforderlich. Stiel (t, x); Untergrund (3, 1, 2); t = b: b + Länge (h) -1; Stiel (t, h); y = conv (x, h); Untergrund (3, 1, 3); t = a + b: a + b + Länge (y) -1; Stiel (t, y);

Zeile 4-5: Definieren Sie diskrete Werte für x (t) und h (t).

Zeile 8, 12 & 18: Definieren Sie den Bereich für die Zeitachse in den Diagrammen, die anschließend mit dargestellt werden sollen Stengel() Funktion (wenn kein Plotten erforderlich ist, können Sie diese Schritte weglassen).

Kreisfaltung in Matlab

Die kreisförmige Faltung kann in den folgenden Schritten durchgeführt werden:

  1. Nehmen Sie die diskrete Fourier-Transformation zweier Vektoren.
  2. Multiplizieren Sie die beiden Transformationen.
  3. Nehmen Sie die inverse diskrete Fourier-Transformation des Produkts und das Ergebnis ist die zirkuläre Faltung zweier Vektoren.

Matlab-Code für zirkuläre Faltung

// Definiere zwei Vektoren für die Kreisfaltung x = [2 5 4 1]; y = [1 4 3]; // Zeropad vectrs bis 4 + 3-1 xpad = [x Nullen (1,6-Länge (x))]; ypad = [y Nullen (1,6-Länge (y))]; // Multipliziere ffts beider Vektoren und nimm idft des Produkts ccirc = ifft (fft (xpad). * Fft (ypad)); // Zeichne nun den Ergebnisstamm (ccirc, 'gefüllt') ylim ([0 35]) title ('Circular Convolution of xpad and ypad');

Wir Empfehlen.

Artikel Des Portals

Noctua NH-D15 SE-AM4 gegen leise sein! Dark Rock Pro 4 CPU-Kühler
Computers

Noctua NH-D15 SE-AM4 gegen leise sein! Dark Rock Pro 4 CPU-Kühler

Ich bin nur ein kleiner Typ, der einen normalen Job al Arzthelferin hat. Meine Leiden chaft i t e , PC zu bauen und PC-Hardware zu te ten / zu überprüfen.Hallo aller eit , Will hier. Heute b...
Besseres Audio für Ihr iPhone und iPad: Externe Mikrofone
Computers

Besseres Audio für Ihr iPhone und iPad: Externe Mikrofone

Jonathan i t zertifizierter Lehrer und hat in Großbritannien und den U A unterrichtet. Heute arbeitet er al Berater für digitale Lernen.Da eingebaute Mikrofon auf iO -Geräten hat defini...