Die Faltung zweier Zeitsignale in MATLAB

Faltung

Die Faltungsoperation ist als Integral oder Summe in diskreten Fällen über einen Bereich von Funktionen f (T) · g (tT) in Bezug auf T definiert. Während der Bereich einer Funktion f bewegt wird, wird jeder Punkt mit a multipliziert zweite Funktion in g. Im Zeitbereich ist die Faltung eine intensive Rechenoperation, jedoch wird die Faltung nach der Transformation in den Frequenzbereich mittels der Fouriertransformation zu Multiplikationen vereinfacht.

Integrierte Funktion

Die Funktionen "conv ()" oder seine zweidimensionale Variante "conv2 ()" können in MATLAB einfach und effizient zum Falten von Signalen verwendet werden. Normalerweise wird davon ausgegangen, dass sich die Signale im zeitlichen oder räumlichen Bereich befinden und nicht im Bereich des Die ersten beiden Argumente sind die beiden zu faltenden Signale oder ein Signal und ein Filter. Das dritte Argument ist ein Argument, das die Größe der Ausgabe definiert. Die gültigen Optionen sind "full", "same" oder "valid" "(" voll ", " gleich "oder" gültig ").

mixed_signal = conv (signal1, signal2, 'same'); new_image = conv2 (image1, image2, 'full');

Zeitbereich

Das Durchführen der Faltung im Zeitbereich kann hilfreich sein, um zu verstehen, wie diese Operation funktioniert:

% für zwei 1-D-Signale, fyg my_length = Länge (f) + Länge (g) - 1; Ergebnis = Nullen (my_length, 1);

für i = 1: meine_Länge für j = 1: Länge (f) wenn ((i-j + 1)> 0 && (i-j + 1) <Länge (g)) Ergebnis (i) = f (j) * g (i-j + 1); Ende Ende Ende

Frequenzbereich

Die Signale im Zeitbereich können mit der Fouriertransformation in den Frequenzbereich transformiert werden. MATLAB implementiert eine schnelle Fourier-Transformation mit der Funktion "ffft ()". Im Frequenzbereich können zwei Signale durch Punktmultiplikation mit dem Operator ". *" Gemischt werden.

% für zwei Signale, fyg F = fft (f); G = fft (g); U = F. * G; u = ifftshift (ifft (U));

Interessante Artikel