Computers

Faltung in Matlab mit Codebeispielen

Autor: Laura McKinney
Erstelldatum: 3 April 2021
Aktualisierungsdatum: 18 November 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

Teilen

Sennheiser Ambeo Review
Computers

Sennheiser Ambeo Review

Marcu Hagen i t ein 24-jähriger Journali tik tudent der Columbia Univer ity.Wenn e etwa gibt, da martphone wirklich populär gemacht haben, dann macht e Foto und Video über alle . chauen...
Werden Quantencomputer alle Schüsse geben?
Computers

Werden Quantencomputer alle Schüsse geben?

Ich bin ein oftware-Ingenieur mit einer Leiden chaft für Wi en chaft, Technologie, Wirt chaft und alle dazwi chen.Einfach o kann prakti ch jeder einzelne Computer auf der Erde al veraltet ange eh...