Inhalt
- Setzt die Faltung in Matlab fort
- Matlab-Code für die Faltung
- Diskrete Faltung in Matlab
- Matlab-Code für diskrete Faltung
- Kreisfaltung in Matlab
- Matlab-Code für zirkuläre Faltung
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:
- Faltet weiter.
- Diskrete Faltung.
- 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:
- Eine Pulswellenform. Bezeichnet durch die Funktion 'square ()'. Dies ist die Eingabe x (t) in das System.
- 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:
- Nehmen Sie die diskrete Fourier-Transformation zweier Vektoren.
- Multiplizieren Sie die beiden Transformationen.
- 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');