Scilab fft howto

Scilab fft howto
Scilab ist ein großartiges Instrument für viele Verwendungszwecke sowohl in wissenschaftlichen als auch in technischen Arbeiten. Dieser Artikel behandelt den Sonderfall von FFT, Fast Fourier Transformation.

Lassen Sie uns zunächst klarstellen, was schnell Fourier -Transformation ist und warum Sie es verwenden möchten. Bei der Mathematik dreht sich alles um Frequenzen. Die Fourier -Transformation ist eine Methode, um kleinere Wellen in einer komplexen Welle einzeln einzelne. Das klang komplex; Wenn Sie Musik hören, hören Sie viele verschiedene Noten vom Sänger, Instrumenten und so weiter. Als Menschen können wir oft die Gitarre selbst hören, aber versuchen, sie mit Technologie in einer Aufnahme zu starten, und Sie stießen in Schwierigkeiten geraten. Die moderne Technologie kann dies dank der verschiedenen Inkarnationen der grundlegenden Fourier -Gleichungen, die im Laufe der Jahre entwickelt wurden. Moderne Verwendungen der Fourier -Serie sind Bild- und Videokomprimierung, GPS und MRT -Scans. All dies macht eine Annäherung an die Quelle und verwenden Fourier -Serien, um Speicher zu speichern und schnellere Ergebnisse zu erzielen.

Der Mathematiker Jean-Baptiste Joseph Fourier versuchte tatsächlich, die Wärmegleichung zu lösen, um zu berechnen, wie sich Wärme in fester Materie ausbreitet. Was er entwickelte, war weitaus nützlicher als das, obwohl seine Methoden später zu einer formelleren Version verbessert wurden. Die Gleichungen werden jetzt in einer Vielzahl von Feldern verwendet.

Um eine bestimmte Frequenz in einem komplexen Signal einzuleiten, können Sie einige Berechnungen verwenden, die schnellen Fourier transformiert. Die mathematische Grundlage dafür erfordert einige Übung. Die Khan Academy ist ein schöner Ort, um die Mathematik zu lernen.

Wenn Sie Wellen analysieren müssen, können Sie Sinusfunktionen verwenden, um die Gesamtwelle zu approximieren und alle separaten Signale von der gemischten Welle zu erhalten. Oder umgekehrt können Sie eine komplexe Welle aus mehreren Sinuswellen machen. Dies ist die Grundidee hinter der Mathematik.

Um Ihre Fourier -Veränderungen besser zu verstehen, besteht eine gute Praxis darin, sie selbst zu schreiben. In Scilab haben Sie eine einfache Programmiersprache mit Schwerpunkt auf Mathematik.
Die verschiedenen Aufgaben, die Sie benötigen, beginnen Fourier -Transformationen mit der Suche nach den Koeffizienten einer Transformation. Der Grund dafür ist, dass dies zur Komprimierung von Bildern und vielen anderen Prozessen verwendet wird.

Wenn Sie die Grundlagen der Serie lernen, sind die Koeffizienten das erste, was verwendet wird. Die Gleichungen sind so:

Der Code zur Lösung ist ziemlich einfach, er beginnt mit einer Funktion. Diese Funktion implementiert die Fourier -Transformation in kleinen Stücken.
Um eine Funktion zu definieren, verwenden Sie das offensichtliche "Funktion" -Konstrukt. Unten finden Sie eine Fourier -Serie für eine Quadratwelle:

Funktion y =F(z)
y = 4*sin (t)/1*%pi + 4*sin (3*t)/3*%pi + 4*sin (5*t)/5*%pi + 4*sin (7*t) /7*%pi
+ 4*sin (9*t)/9*%pi
Endfunktion

Um die Welle noch quadratischer zu machen, ist es doch eine Annäherung, Sie müssen die Anzahl der Begriffe weiter erhöhen. Wenn Sie ein Muster neu erstellen möchten, sagen Sie einen Cartoon, verwenden Sie die Fourier -Transformation auf sehr ähnliche Weise. Sie müssen nur den Zeitraum als unendlich betrachten.

Einfach rechts? Nun, nicht ohne das grundlegende mathematische Wissen. Probieren Sie selbst ein paar Beispiele mit Scilab aus.

Dieses Beispiel zeigt die einfachste mögliche Signalkombination; Zwei Signale unterschiedlicher Frequenz.

// Wählen Sie eine Beispielgröße
N = 100;
// Setzen Sie die Sequenz, sodass das Array erstellt wird
n = 0: n-1;
// Erstellen Sie die Frequenz der Signale
W1 = %pi/4
W2 = %pi/8
// Machen Sie die abgetasteten Signale
S1 = cos (W1*n); // Die erste Komponente des Signals
s2 = cos (w2*n); // die zweite Komponente des Signals
// Kombinieren Sie die beiden zu einem Signal
// In diesem Fall machen wir ein einfaches sauberes Signal.
F = S1 + S2;
// Hier ist das resultierende Signal zur Transformation bereit.
Abbildung (0);
Grundstück (f);
// Die Fourier -Transformation dieses Signals sollte nur die Frequenz der Komponenten zeigen.
F = fft (f);
F_abs = abs (f);
Abbildung 1);
plot (n, f_abs);
Figur 2);
Grundstück (f);

Verwenden Sie das obige Beispiel, um zu üben, wie die Transformation funktioniert. Stellen Sie sicher, dass Sie es auf unterschiedliche Weise in Filter ändern.

Ein Tipp ist es, die Scilab -Konsole zu verwenden, um zu sehen, was die Variablen in jedem Schritt des Programms enthalten. Auf diese Weise können Sie auch sehen, dass 'F' einen imaginären Inhalt hat. Versuchen Sie, Äfä auf eine andere Weise zu ändern, um ein korrekteres Ergebnis zu erzielen.

In der Industrie ist die häufigste Verwendung von Fourier -Transformationen zur Analyse des Signals. Um Frequenzen aus einem lauten Signal herauszufiltern, müssen Sie mit dem Erstellen oder Importieren eines Signals beginnen. Der folgende Code -Snippet erstellt ein gemischtes Signal von zwei Frequenzen, 50 und 70 Hz. In dem Code können Sie auch die Verwendung von "Grand" sehen, dies ist der Scilab -Aufruf nach zufällig. Diese zufälligen Werte werden hinzugefügt, um das Signal ein bisschen laut zu machen, näher an der Realität.

sample_rate = 1000;
t = 0: 1/sample_rate: 0.6;
N = Größe (t, '*'); //Anzahl von Beispielen
S = sin (2*%pi*50*t)+sin (2*%pi*70*t+%pi/4)+grand (1, n, 'Nor', 0,1);
Jetzt können Sie 's' als Funktion von 'T' zeichnen und sehen, dass die Grafik chaotisch aussieht.
>> Diagramm (t, s);

Hier ist es Zeit, die einfachsten Fourier -Transformationen auszuprobieren, die Fourier -Transformation von S zu machen.

y = fft (s);

fft

Wenn Sie 'y' als Funktion von 'T' zeichnen, erhalten Sie ein etwas symmetrisches Muster von 0 bis 0.6. Die beiden Spikes sind das, wonach wir suchen, aber wir sehen sie jetzt in der Zeitdomäne. Was wirklich passiert war, war, dass das Ergebnis immer noch die imaginären Werte enthielt. Um die beiden Frequenzen in der Frequenzdomäne zu finden, benötigen wir weitere OperationSto, die nur die realen Zahlen finden. Und dann nehmen Sie den absoluten Wert der Ergebnisse. Die Grafik weist deutlich auf die ursprünglichen Frequenzen hin.

Hier ist der Code:

// s ist real, daher ist die FFT -Antwort konjugiert symmetrisch und wir behalten nur die erste
N/2 Punkte
f = sample_rate*(0: (n/2))/n; // zugeordnete Frequenzvektor
n = Größe (f, '*')
CLF ()
Diagramm (F, Absy (1: n)))

Dies ist die häufigste Verwendung der Fourier -Transformation. Mit diesem System finden Sie jede Frequenz in einem komplexen, lauten Signal. Die Gleichungen werden heute in vielen Branchen häufig verwendet.
Die FFT2-Funktion von Scilab ist die zweidimensionale Version der schnellen Fourier-Transformation.

Eine gute Möglichkeit zum Üben besteht darin, die DTMF -Töne auszuwählen, einen Knopf zu erstellen und Scilab herauszufinden.

Die Demos in Scilab selbst enthält ein Sounddatei -Showcase, studieren Sie sie.

Wenn Sie tiefer graben möchten, finden Sie hier einige Links zum weiteren Lesen.

Erweiterte Literatur:

https: // cnx.org/contents/ulxtqbn7@15/Implementierung-FFTS-in-Practice#UID8

Wolfram…

http: // Demonstrationen.Wolfram.com/complexandrealplanesofdiscretefouriertransforms/

Implementierung in anderen Sprachen:

https: // www.Nayuki.IO/Page/How-to-Implement-the-Discrete-Fourier-Transformation

Um das richtige Gefühl für das Thema zu bekommen:

https: // BetterExed.com/articles/anteraktives-guide-the-vierer-Transformationen/