Forum: Digitale Signalverarbeitung / DSP / Machine Learning Software für DFT bzw FFT


von Dominik (Gast)


Lesenswert?

Hallo allerseits!
Ich suche für das fach Digitale Signalverarbeitung eine freeware
Software, die für vorgegebene Funktionen eine DFT bzw eine FFT
durchführt. Sowas muss es doch bestimmt geben. Bei google bin ich bis
jetzt nur auf Programme gestoßen, die z.B. ein Eingangssignal vom Mikro
transformieren.
Würde mich echt weiterbringen, wenn da jemand einen Tipp hätte.

Grüße Dominik

von Thomas (Gast)


Lesenswert?

Was für Funktionen meinst du denn ?

Gruß Thomas

von Dominik (Gast)


Lesenswert?

Hallo Thomas!
Vielleicht so Grundfunktionen wie sinus, rechteck, dreieck usw, die man
dann eventuell auch noch überlagern kann. Das ganze soll mir nur beim
Verständnis von DFT helfen und zur Kontrolle von Übungsaufgaben, die
ich gerechnet habe usw.

Gruß Dominik

von D.N. (Gast)


Lesenswert?

für Linux könnte ich dir was geben was unser prof geschrieben hat

von Thomas (Gast)


Lesenswert?

Für die Grundfunktionen steht die FT in jeder Mathe-Formelsammlung .....
Und da das ganze linear ist (zumindest im Systemtheoretischen
Sinn..:o)))....
Oder willst du solche Dinge wie Fenstereigenschaften etc. ausprobieren
?
Vielleicht ein kleiner Tip: Schreib die paar Zeilen für eine DFT (und
später für eine FFT) selbst und geh schrittweise durch, dann hast du
den größten Lerneffekt und weißt was du dann tust....

Gruß Thomas

von Dominik (Gast)


Lesenswert?

Guten Morgen!
Erstmal danke für eure Antworten. Das Linux Programm könnte mir
eventuell schon helfen. Hab eine Knoppix Version mit der ich das dann
ausführen könnte. Wie groß ist das Programm von dir denn (D.N.)? Kann
ich das irgendwo ziehen? hab meine E-Mail oben mal angegeben.
Ja Fenstern und Aliasing und solche Geschichten würde ich gerne mit
drin haben, damit man sich diese Effekte mal an einer Hand von
Beispielen klarmachen kann.
An das selber proggen habe ich auch schon gedacht. Würde das Ganze nur
gerne vorher richtig verstanden haben, damit ich dann auch sinnvollen
Quelltext zaubere.

Gruß Dominik

von D.N. (Gast)


Lesenswert?

@Dominik

ja die Programme laufen unter knopix oder suse. Habe sie selber nur
unter suse probiert.
In den Programmen wird eine u.a komplette digitale Übertragung
simuliert. Man kann alles mögliche einstellen von Antialis.-Filter über
Abtastenfrequensen, Fenster und dessen Wirkung auf das Signal am
Ausgang. Schöne Darstellung mit Bild und Zeitbereich. Hat der Prof.
genial gemacht.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Fuer sowas verwendet man i.d.R. Matlab, Scilab oder Octave. Kann mir
ehrlich gesagt nicht vorstellen dass das in eurer Vorlesung nicht auch
mal erwaehnt wurde.

von Dominik (Gast)


Lesenswert?

Schönen guten Abend!
@ D.N.: Das hört dich ja alles ganz gut an. Also ist das irgendwie
möglich da dran zu kommen? Kannst du mir vielleicht einen Link mailen,
oder das komplette Programm, wenn das nicht zu groß ist? Das würde mir
auf jedenfall schon weiter helfen.

@ Andreas: Ja Matlab kenn ich noch aus der Regelungstechnik. Allerdings
habne wir da nie diskret, sondern nur kontinuierlich mit gearbeitet.
Habens zeitlich nichtmal bis zur digitalen Regelung geschafft gg. Wie
stellst du es denn an, wenn du ne FFT machen willst? Gibt es da in
Simulink irgendwelche Glieder, die das machen, oder Befehle für Matlab?
Is ja immer ein wenig schwer sich da alleine einzuarbeiten.

Nochmal schönen Dank für die Hilfe.

von Gerrit Buhe (Gast)


Lesenswert?

Hallo Dominik,

schau' doch mal hier:

http://www.scilab.org
http://www.octave.org

Octave ist "MATLAB-kompatibler", dafür hat Scilab mehr
Signal-Processing-Funktionen dabei. Beide Programme sind für Linux/Unix
und Windows frei herunterladbar und sehr zu empfehlen.

Viele Grüße!

Gerrit

von Dominik (Gast)


Lesenswert?

Hallo!
Habe mir Scilab jetzt mal besorget. Sieht ganz vielversprechend aus.
Bedarf allerdings erstmal ein bischen Einarbeitung, bis man sich da ein
Bild gemacht hat, was alles möglich ist.

Also danke für die Links und auch danke an die Anderen für ihre Hilfe.

Gruß Dominik

von Gerrit Buhe (Gast)


Lesenswert?

Hallo Dominik,

Test für eine erste FFT unter scilab:

fc=1e3;    //Signalfrequnez ist 1kHz
fs=8e3;    //Abtastfrequenz ist 8kHz
n=1:20e3;  //Abtastungen (n*Ts = n* 1/fs)

sig=sin(2*%pi*fc/fs*n);  //Signal im Zeitbereich

samples=length(n);  //folgende Zeilen nur für Abzissenbeschriftung
fbin=fs/samples;  //Freq.-Abstand der einzelnen FFT-Punkte für
Skalierung
fax=fbin*(-samples/2:1:samples/2-1);  //"X-Achsen"-Saklierung

plot2d(fax, 20*log10(abs(fftshift(fft(sig, -1)))), style=2); xgrid

Hoffe es hilft...

Gruß, Gerrit

P.S.
Meist ist eine Fensterung nötig, weil die zu analysierende Sequenz
nicht von minus Unendlich bis plus Unendlich vorliegt, was die FFT aber
erwartet ("Leckeffekt"). Dann ist das Bsp. wie folgt zu ergänzen:

win=window('hn', samples);
sig=sig.*win;

von Dominik (Gast)


Lesenswert?

Hallo!
Erstmal danke für die paar Zeilen, die mir auf die Sprünge geholfen
haben. Habs auch soweit nachvollziehen können, bis auf ein paar
Befehle:

- wozu dient das -1 bei fft(sig,-1)?

- wozu dient der Befehl fftshift?

- was bedeutet sig.*win?

- was bedeutet 'hn'? ist das ein Hanning Fenster?

Hoffe da kann mir nochmal einer weiter helfen.

Gruß Dominik

von Gerrit Buhe (Gast)


Lesenswert?

Hallo Dominik,

mit "help fft" bzw. "help fftshift" kannst Du beides
herausbekommen. ;o)

Kurz: "-1" steht für die Richtung der Fourier-Transformation. Das war
bisher nötig. da der Befehl "ifft" für die inverse FFT nicht
existierte (anders als in MATLAB und Octave); man mußte fft(data,1)
dafür angeben. Bisher hat man bei "fft(data)" eine Fehlermeldung
bekommen, was nun offensichtlich nicht mehr der Fall ist (hatte ich
noch nicht mitbekommen ;o).

"fftshift" klappt nur die beiden Hälften der FFT um, so daß die
Frequenz Nulll in der Mitte liegt. Bei Basisbandspektren sieht es dann
besser aus. Ohne "fftshift" liegt die Frequenz Null ganz links, die
Nyquist-Freq. in der Mitte und die Abtastfrequenz ganz rechts.

Mit "sig.*win" wird das generierte Signal (der Sinus) mit der
generierten Fensterfunktion gewichtet (multipliziert). Damit das
Element für Element erfolgt und nicht wie bei einer Matrix-Operation,
muß vor dem Operator ein Punkt stehen.
Z.B. wird bei "sig^2" die Matrix quadriert, während bei "sig.^2"
jedes Element der Matrix quadriert wird.

Ja, 'hn' steht für Hanning -> "help window" ;o).

Viel Erfolg!

Gerrit

von Christian Uhl / mrtest (Gast)


Lesenswert?

Hallo zusammen!

Ich kenne mittlerweile ein wenig Octave und damit klappt das mit der 
diskreten Faltung und Fouriertransformation soweit ganz gut.

Nachdem aber das Programm eines Professors hier so sehr gelobt wurde und 
besonders seine graphische und anschauliche Darstellung sowie sein 
Lerneffekt, haette ich auch Interesse daran bekommen...

Hat das hier von euch jemand oder kennt zumindest die Hochschule bzw. 
den Professor, der Autor der Software war / ist?

Vielen Dank
Christian Uhl

von Rüdiger K. (sleipnir)


Lesenswert?

Ich habe mal für unsere Studenten ein Octave/Matlab-Tutorial 
geschrieben, welches auch die Anwendung der FFT umreißt. Vielleicht 
hilft Dir das weiter.
http://www.nue.tu-berlin.de/teaching/praktika/multimedia/OctaveTut.pdf

von Zulu (Gast)


Lesenswert?

Gerrit Buhe schrieb:
> Ja, 'hn' steht für Hanning

dass das nicht aufhört, mit diesem unsinnigen Begriff "hanning".

Man spricht ja auch nicht vom "Gaussing", "Fouriering" oder "Laplacing".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.